Сведения о вопросе

Ислам

23:21, 24th August, 2020

Теги

xml   web-services    

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

Просмотров: 505   Ответов: 5

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

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

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



  Сведения об ответе

COOL

15:14, 11th August, 2020

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

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

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


  Сведения об ответе

KOMP

03:53, 12th August, 2020

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


  Сведения об ответе

SKY

11:25, 25th August, 2020

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

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


  Сведения об ответе

padenie

21:46, 4th August, 2020

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

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


  Сведения об ответе

+-*/

23:09, 16th August, 2020

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться