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