通过 Windows Communication Foundation (WCF) 发送和接收原始二进制数据是使用 ByteStreamMessageEncodingBindingElement 配置的。
字节流消息编码器体系结构
WCF 使用的二进制消息编码器没有用于处理、验证或标识消息中基础二进制数据的工具。 数据包编码为 XML、发送、接收和解码。 编码器在传递到传输后以及消息发送到消息队列之前处理数据。 在功能上,二进制编码器将消息数据包装在元素中 <binary> ,以便在收到消息后发送和删除这些元素。
使用字节流消息编码器
以下示例演示实现字节流消息编码器的服务协定。
[OperationContract]
Void Myfunction(Stream stream);
下面的示例演示正在调用的服务。
proxy.MyFunction(stream);
如果使用实现消息基础结构(如路由器)的服务,则会在不检查、验证或与消息交互的情况下处理消息,如以下示例所示。
[OperationContract]
void ProcessMessage(Message message) ;
情境
在以下方案中,字节流编码器非常有用。
使用 WCF 在计算机之间传输 JPEG 映像。 在此方案中,映像将通过来自外部源的传输到达,发送的数据将是构成图像的原始字节。 服务将接收二进制数据并显示图像。
从消息队列中读取信息并对其进行处理。 该消息将从消息队列管理器中读取,并通过消息队列通道传递以进行处理。 消息队列通道将充当 WCF 通道堆栈中的队列管理器。
在通过消息队列通道发送消息时,发送方无法控制从队列管理器接收的字节数。 如果接收进程无法读取原始字节,则消息将接收为格式错误且不会被处理;假定接收进程能够将接收的字节转换回可用格式。