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