作为一款.NET Framework 3.5重要组成部件的WCF,它在实际应用中占据着一个非常重要的地位。在这里我们将会为大家讲解一个关于WCF MTOM的示例。此示例演示如何将消息传输优化机制 (MTOM) 消息编码与 WSHttpBinding 一起使用。WCF MTOM是一种机制,用来以原始字节形式传输包含 SOAP 消息的较大二进制附件,从而使所传输的消息较小。
默认情况下,WSHttpBinding 以正常文本 XML 形式发送和接收消息。若要允许发送和接收 MTOM 消息,请在绑定的配置中设置 messageEncoding 属性 (Attribute)(如下面的示例代码中所示),或者使用 MessageEncoding 属性 (Property) 直接在绑定中进行设置。服务或客户端现在可以发送和接收 MTOM 消息了。
- < wsHttpBinding>
- < binding name="WSHttpBinding_IUpload" messageEncoding="Mtom"/>
- < /wsHttpBinding>
WCF MTOM编码器可以优化字节和流的数组。在下面的示例中,操作使用 Stream 参数,因此可以进行优化。
- [ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
- public interface IUpload
- {
- [OperationContract]
- int Upload(Stream data);
- }
为该示例选择的协定会将二进制数据传输到服务,并将上载的字节数作为返回值接收。在安装服务之后运行客户端时,服务会显示数字 1000,这表示收到了全部 1000 个字节。剩下的输出列出了在各种负载情况下经过优化和未经优化的消息大小。
- Output:
- 1000
- Text encoding with a 100 byte payload: 433
- MTOM encoding with a 100 byte payload: 912
- Text encoding with a 1000 byte payload: 1633
- MTOM encoding with a 1000 byte payload: 2080
- Text encoding with a 10000 byte payload: 13633
- MTOM encoding with a 10000 byte payload: 11080
- Text encoding with a 100000 byte payload: 133633
- MTOM encoding with a 100000 byte payload: 101080
- Text encoding with a 1000000 byte payload: 1333633
- MTOM encoding with a 1000000 byte payload: 1001080
- Press < ENTER> to terminate client.
以上就我们为大家介绍的WCF MTOM相关应用技巧。
【编辑推荐】