全面闡述WCF可靠性傳輸性能
隨著時代的發展,WCF技術也隨著更新,我們就WCF可靠性傳輸展開全文的講解,WCF與其他面向服務技術之間(asp.net \j2ee Web Service技術等)最大的區別在于傳輸可靠性(Transport Reliability)與消息可靠性(Message Reliability)。傳輸可靠性(例如通過TCP傳輸)在網絡數據包層提供了點對點保證傳遞(Point-to-Point Guaranteed Delivery),以確保數據包的順序無誤。傳輸可靠性不會受到網絡連接的中斷或其他通信問題的影響。
#T#消息可靠性提供了端對端保證傳遞(End-to- End Guaranteed Delivery),確保消息的順序無誤。消息可靠性與引入的中間方的數量無關,與網絡跳數(Network Hops)的數量也沒有關聯。消息可靠性基于一個行業標準。該行業標準為可靠的基于消息的通信維持了一個在傳輸層的會話。如果傳輸失敗,例如無線連接中斷,消息可靠性就會重試(Retries)功能。它還能夠自動處理網絡阻塞(Congestion)、消息緩存(Message Buffering)以及流控制(Flow Control),根據具體情況適時調整發送的消息數。消息可靠性還能夠通過對連接的驗證管理連接自身,并在不需要連接時清除它們。
這里WCF可靠性傳輸首先來說數據傳輸同樣依賴底層的網絡傳輸協議,如TCP協議,TCP傳輸控制協議底層就是要求建立連接的狀態進行數據傳遞。其次消息可靠性也是對已有消息可靠性行業標準的支持,WCF框架實現或者擴展了消息可靠性行業標準。Web Service使用http/post/get/soap三種方式進行訪問,http協議是請求/響應協議,不會維持特定的傳輸通道,本身是不支持可靠性。
傳輸協議與可靠性:
看來以上的介紹內容,我們再來介紹WCF綁定協議的可靠性,同樣WCF的可靠性和具體的綁定協議彌補可分。總結了綁定、可靠性、有序傳遞(Ordered Delivery)以及它們各自的默認值之間的關系。
◆BasicHttpBinding不支持可靠性,BasicHttpBinding面向舊的ASMX Web服務,是不具有可靠性的;
◆NetMsmqBinding不支持可靠性,MSMQ協議,使用消息隊列,針對斷開調用,不存在傳輸會話;
◆MsmqIntegrationBinding不支持可靠性;支持WCF與MSMQ協議通信,不存在傳輸會話;
◆NetPeerTcpBinding不支持可靠性。NetPeerTcpBinding則為廣播場景設計。
◆WSDualHttpBinding支持可靠性的,建立兩個http會話通道,保持回調通道,確保基于HTTP協議的客戶端存在;
◆NetTcpBinding 支持可靠性,顯然使用TCP傳輸數據。以及各種WS綁定,默認情況下并不支持可靠性,允許啟用;
◆NetNamedPipeBinding綁定總是擁有一個確定的從客戶端到服務的跳數,因而它的可靠性是綁定固有的;
◆WSFederationHttpBinding支持可靠性,支持聯邦通信協議,支持在多個安全區域進行安全會話。
WS綁定協議一般都提供了對可靠性傳遞的支持,可以編程或者配置方式在項目里啟用。WCF可靠性傳輸要根據綁定的目標場景而定。