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