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

时间:2020-03-05 18:39:47  来源:igfitidea点击:

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

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

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

解决方案

回答

我将这种方法用于一些内部公司的Web服务,但是我没有注意到任何重大的问题(但这并不意味着它不存在)。

我们可能可以使用众多网络流量分析工具中的任何一种来测量数据的大小,并据此做出判断。

回答

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

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

" base64"编码版本约为原始内容大小的137%。

回答

我不确定所有详细信息(压缩,编码等),但是通常我只是使用WireShark分析网络流量(尝试各种方法时),然后我们可以准确地查看其发送方式。

例如,如果已压缩,则数据包的数据块不应以纯文本格式读取...但是,如果未压缩,则只会看到纯旧的xml文本...就像HTTP流量,甚至FTP在某些情况下。

回答

为了回应Kevin所说的,在.net Web服务中,如果我们有字节数组,则默认情况下将其作为base64编码的字符串发送。我们也可以预先指定字节数组的编码。

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

回答

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