Сколько дополнительных издержек генерируется при отправке файла через веб-сервис в виде байтового массива? - PullRequest
4 голосов
/ 15 августа 2008

Этот вопрос и ответ показывает, как отправить файл в виде байтового массива через веб-службу XML. Сколько накладных расходов генерируется при использовании этого метода для передачи файлов? Я предполагаю, что данные выглядят примерно так:

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

Если этот формат правильный, байты должны быть сначала преобразованы в символы UTF-8. Каждый из этих символов выделяет 8 байтов. Байты хранятся в десятичных, шестнадцатеричных или двоичных символах? Насколько больше размер файла при его отправке из-за данных XML и кодировки символов? Встроено ли сжатие в веб-сервисы?

Ответы [ 5 ]

11 голосов
/ 15 августа 2008

Обычно байтовый массив отправляется в виде строки, закодированной в base64, а не в виде отдельных байтов в тегах.

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

Кодированная версия base64 составляет примерно 137% от размера исходного содержимого.

0 голосов
/ 23 августа 2008

Основной удар по производительности происходит не от передачи закодированного файла, а от обработки, которую должен выполнить сервер для кодирования предварительной передачи файла (если файлы не меняются часто). и закодированная версия может быть как-то кэширована).

0 голосов
/ 15 августа 2008

Чтобы повторить сказанное Кевином, в веб-сервисах .net, если у вас есть байтовый массив, по умолчанию он отправляется в виде строки в кодировке base64. Вы также можете заранее указать кодировку байтового массива.

Очевидно, что, как только он попадет на сервер (или клиент), вам нужно вручную декодировать строку обратно в байтовый массив, поскольку, к сожалению, для вас это не делается автоматически.

0 голосов
/ 15 августа 2008

Я не уверен во всех деталях (сжатие, кодирование и т. Д.), Но я обычно просто использую WireShark для анализа сетевого трафика (при попытке различными способами), который затем позволяет вам увидеть, как именно отправлено.

Например, если он сжат, блок данных пакета не должен читаться как обычный текст ... однако, если он не сжат, вы увидите просто старый текст XML ... как вы видели бы с трафиком HTTP, или даже FTP в некоторых случаях.

0 голосов
/ 15 августа 2008

Я использую этот метод для некоторых внутренних корпоративных веб-сервисов, и я не заметил каких-либо серьезных замедлений (но это не значит, что его там нет).

Вероятно, вы могли бы использовать любой из многочисленных инструментов анализа сетевого трафика для измерения размера данных и на основании этого сделать оценочный вызов.

...