WCF MTOM功能特點介紹
作為一款.NET Framework 3.5重要組成部件的WCF,它在實際應(yīng)用中占據(jù)著一個非常重要的地位。在這里我們將會為大家講解一個關(guān)于WCF MTOM的示例。此示例演示如何將消息傳輸優(yōu)化機(jī)制 (MTOM) 消息編碼與 WSHttpBinding 一起使用。WCF MTOM是一種機(jī)制,用來以原始字節(jié)形式傳輸包含 SOAP 消息的較大二進(jìn)制附件,從而使所傳輸?shù)南⑤^小。
默認(rèn)情況下,WSHttpBinding 以正常文本 XML 形式發(fā)送和接收消息。若要允許發(fā)送和接收 MTOM 消息,請在綁定的配置中設(shè)置 messageEncoding 屬性 (Attribute)(如下面的示例代碼中所示),或者使用 MessageEncoding 屬性 (Property) 直接在綁定中進(jìn)行設(shè)置。服務(wù)或客戶端現(xiàn)在可以發(fā)送和接收 MTOM 消息了。
- < wsHttpBinding>
- < binding name="WSHttpBinding_IUpload" messageEncoding="Mtom"/>
- < /wsHttpBinding>
WCF MTOM編碼器可以優(yōu)化字節(jié)和流的數(shù)組。在下面的示例中,操作使用 Stream 參數(shù),因此可以進(jìn)行優(yōu)化。
- [ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
- public interface IUpload
- {
- [OperationContract]
- int Upload(Stream data);
- }
為該示例選擇的協(xié)定會將二進(jìn)制數(shù)據(jù)傳輸?shù)椒?wù),并將上載的字節(jié)數(shù)作為返回值接收。在安裝服務(wù)之后運行客戶端時,服務(wù)會顯示數(shù)字 1000,這表示收到了全部 1000 個字節(jié)。剩下的輸出列出了在各種負(fù)載情況下經(jīng)過優(yōu)化和未經(jīng)優(yōu)化的消息大小。
- 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.
以上就我們?yōu)榇蠹医榻B的WCF MTOM相關(guān)應(yīng)用技巧。
【編輯推薦】