размер массива byte [] равен фактическому размеру массива в C #? - PullRequest
3 голосов
/ 24 июля 2010

Отражает ли размер массива byte [] тот же размер байтов, которые нужно передать, если мне нужно передать файл через веб-сервис?

EG:

byte[] testarray = new byte[100000]

означает, что егоразмер передаваемого будет около 100 000 байт (100 КБ)?

спасибо

Ответы [ 4 ]

3 голосов
/ 24 июля 2010

Без лишних деталей, ответ - да.testarray - это байтовый буфер 100000 отсчетов.Это 100000/1024 = 97,6 КиБ (черт возьми, кБ против стандартов КиБ СИ)

2 голосов
/ 24 июля 2010

Зависит от того, какой протокол вы будете использовать для доступа к веб-сервису.Если вы используете SOAP поверх HTTP, это приведет к значительным накладным расходам, поскольку байтовый массив будет передаваться в виде строки base64.Это все равно будет означать увеличение размера примерно на 8/6, чуть более 130 кБ.

Возможно, вы захотите использовать MTOM .Это значительно уменьшит накладные расходы.

Еще одна вещь, которую вам, возможно, придется учитывать, - это то, что платформы веб-служб, такие как WCF, иногда имеют максимальные размеры сообщений.Для конфигурации WCF по умолчанию сообщение будет слишком большим.

1 голос
/ 24 июля 2010

Да, если вы не кодируете это по-другому.

0 голосов
/ 24 июля 2010

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

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

...