Кодирование двоичных объектов с помощью кодировщика ByteStream

Настройка отправки и получения необработанных двоичных данных с помощью ByteStreamMessageEncodingBindingElementWindows Communication Foundation (WCF).

Архитектура кодировщика сообщений потока байтов

Кодировщик двоичных сообщений, используемый WCF, не имеет средства для обработки, проверки или идентификации базовых двоичных данных в сообщении. Пакет данных кодируется в XML, отправляется, получает и декодируется. Кодировщик обрабатывает данные после передачи в транспорт и перед отправкой сообщения в очередь сообщений. Функционально двоичный кодировщик упаковывает данные сообщения в <binary> элементы для отправки и удаления элементов после получения сообщения.

Использование кодировщика сообщений потока байтов

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

[OperationContract]  
Void Myfunction(Stream stream);  

В следующем примере показана вызываемая служба.

proxy.MyFunction(stream);  

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

[OperationContract]  
void ProcessMessage(Message message) ;  

Сценарии

Кодировщик потока байтов полезен в следующих сценариях.

  • Передача изображения JPEG между компьютерами с помощью WCF. В этом сценарии образ будет поступать через транспорт из внешнего источника, и отправленные данные будут необработанными байтами, составляющими изображение. Служба получит двоичные данные и отобразит изображение.

  • Чтение сведений из очереди сообщений и его обработка. Сообщение будет считываться из менеджера очереди сообщений, а затем передано на канал очереди сообщений, где оно будет обработано. Канал очереди сообщений будет выступать в качестве диспетчера очередей в архитектуре каналов WCF.

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