一、介紹WCF
分佈式應用需要頻繁地跨進程邊界通信。分佈式應用同樣需要託管(宿主,比如IIS,Windows NT服務)。.Net Framework通過Socket和MessageQueue類型抽象了操作系統的I/O機制。這種類型會被WCF的基礎框架來用來發送和接收消息。
WCF特性:獨立版本控制、異步只進消息、平臺統一、可靠性、事務支持、互操作性、性能、擴展性和配置性。
WCF支持跨越多個系統的事務範圍:
- .NET Remoting:高效,不能與非.net framework應用交互。
- ASMX(web service):沒.NET Remoting高效,但可以與非.net framework應用交互。
- MSMQ(Message Queue):效率不高,但消息的特性可以彌補效率問題,不能與其他的消息隊列系統交互。
WCF支持XML文件的完善的配置功能。WCF完全支持SOAP和WS-*規範,也同樣可以發送樸素的舊的XML(POX)消息,並且適應架構。它集成了不同的分佈式技術:RPC,COM+,Remoting,ASMX,WSE和MSMQ,WCF也是高擴展性的。
消息編碼:
WCF是建立在SOAP1.2(XML Infoset)上的,但是它可以同時處理SOAP1.1和SOAP1.2的消息。
WCF提供了三種編碼器:
- 文本(text)編碼器
- 二進制(binary)編碼器
- MTOM(消息傳輸優化機制)編碼器。
- WCF4.0裏提供了一種新的編碼器:字流編碼器,用於滿足對原始二進制數據傳輸的需求。
二進制編碼器只適用於WCF到WCF的通信。在WCF所有的編碼器中,二進制編碼器產生最小的信息。這個編碼器產生一個序列化的Infoset。
MTOM消息編碼的WCF消息可以發送給非WCF的應用。在運行時,MTOM編碼器會爲數字簽名創建一個基於base64編碼的符號,讓原始二進制數據可以在消息裏打包。
WCF的設計目標就是在改變消息編碼的時候,不需要對應用系統做出大的改變。事實上,這使得一個服務可以與多種消息編碼交互成爲可能。