Как эффективно отправить байт [] с использованием WCF - PullRequest
1 голос
/ 29 марта 2010

Мне нужно отправить массив byte [] с использованием служб WCF, и я забочусь о размере и производительности сообщения. Мой вопрос: WCF конвертирует мои двоичные данные в строку Base64 для внутреннего использования? (Я использую netTcpBinding) Если это так, как это предотвратить?

Мой контракт выглядит почти так же просто, как

IMyService 
{
  byte[] GetData()
}

1 Ответ

4 голосов
/ 29 марта 2010

С точки зрения фактического XML, байтовые массивы сериализуются как xs: base64Binary , что является кодировкой Base64 (очевидно).

Однако при указании netTcpBinding WCF использует двоичную кодировку сообщений этого XML ( BinaryMessageEncodingBindingElement ), которая будет кодировать эти байты в виде двоичного потока.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...