通过Web服务作为字节数组发送文件时会产生多少额外开销?

时间:2008-08-15 00:29:58

标签: xml web-services

这个question and answer显示了如何通过XML Web服务将文件作为字节数组发送。使用此方法进行文件传输会产生多少开销?我假设数据看起来像这样:

<?xml version="1.0" encoding="UTF-8" ?>
<bytes>
    <byte>16</byte>
    <byte>28</byte>
    <byte>127</byte>
    ...
</bytes>

如果此格式正确,则必须首先将字节转换为UTF-8字符。每个字符分配8个字节。字节是以十进制,十六进制还是二进制字符存储的?由于XML数据和字符编码,文件在发送时会显示多大?压缩内置于Web服务中吗?

5 个答案:

答案 0 :(得分:11)

通常,字节数组作为base64编码的字符串发送,而不是作为标记中的单个字节发送。

http://en.wikipedia.org/wiki/Base64

base64编码版本大约是原始内容大小的 137%

答案 1 :(得分:0)

我将这种方法用于一些内部企业网络服务,我没有注意到任何重大的减速(但这并不意味着它不存在)。

您可以使用众多网络流量分析工具中的任何一种来衡量数据的大小,并根据此进行判断调用。

答案 2 :(得分:0)

我不确定所有细节(压缩,编码等),但我通常只使用WireShark来分析网络流量(尝试各种方法时),这样就可以确切地看到它是如何发送的

例如,如果它被压缩,数据包的数据块不应该像纯文本一样可读...但是如果它是未压缩的,你只会看到普通的旧xml文本......就像你会看到HTTP流量一样,在某些情况下甚至是FTP。

答案 3 :(得分:0)

回应Kevin所说的,在.net Web服务中,如果你有一个字节数组,它默认发送为base64编码的字符串。您也可以预先指定字节数组的编码。

显然,一旦到达服务器(或客户端),您需要手动将字符串解码回字节数组,因为不幸的是,这不是自动完成的。

答案 4 :(得分:0)

主要的性能影响不会来自编码文件的传输,它将在服务器必须进行的处理中对文件进行预传输(除非文件不经常更改)并且可以以某种方式缓存编码版本。