經(jīng)驗(yàn)之談WCF選擇綁定
WCF有很多值得學(xué)習(xí)的地方,這里我們主要介紹WCF選擇綁定,包括介紹使用綁定等方面。為WCF選擇綁定服務(wù)應(yīng)該遵循圖所示的決策活動(dòng)圖表。首先需要確認(rèn)服務(wù)是否需要與非WCF的客戶端交互。如果是,同時(shí)客戶端又是舊的MSMQ客戶端,選擇MsmqIntegrationBinding綁定就能夠使得服務(wù)通過MSMQ與該客戶端實(shí)現(xiàn)互操作。如果服務(wù)需要與非WCF客戶端交互,并且該客戶端期望調(diào)用基本的Web服務(wù)協(xié)議(ASMX Web服務(wù)),那么選擇BasicHttpBinding綁定就能夠模擬
#T#ASMX Web服務(wù)(即WSI-Basic Profile)公開WCF服務(wù)。缺點(diǎn)是我們無法使用大多數(shù)最新的WS-*協(xié)議的優(yōu)勢(shì)。但是,如果非WCF客戶端能夠識(shí)別這些標(biāo)準(zhǔn),就應(yīng)該選擇其中一種 WS綁定,例如WSHttpBinding、WSFederationBinding或者WSDualHttpBinding。如果假定客戶端為WCF客戶端,同時(shí)需要支持脫機(jī)或斷開狀態(tài)下的交互,則可以選擇NetMsmqBinding使用MSMQ傳輸消息。如果客戶端需要聯(lián)機(jī)通信,但是需要跨機(jī)器邊界調(diào)用,則應(yīng)該選擇NetTcpBinding通過TCP協(xié)議進(jìn)行通信。如果相同機(jī)器上的客戶端同時(shí)又是服務(wù),選擇NetNamePipeBinding使用命名管道可以使性能達(dá)到最優(yōu)化。如果基于額外的標(biāo)準(zhǔn),例如回調(diào)(選擇WSDualHttpBinding)或者聯(lián)邦安全(選擇 WSFederationBinding),則應(yīng)對(duì)選擇的綁定進(jìn)行微調(diào)。
注意:即使超出了使用的目標(biāo)場(chǎng)景,大多數(shù)綁定工作仍然良好。例如,我們可以使用TCP綁定實(shí)現(xiàn)相同機(jī)器甚至進(jìn)程內(nèi)的通信;我們也可以使用基本綁定實(shí)現(xiàn)Intranet中WCF對(duì)WCF的通信。然而,我們還是應(yīng)盡量按照?qǐng)DWCF選擇綁定。
使用綁定:每種綁定都提供了多種可配置的屬性。綁定有三種工作模式。如果內(nèi)建綁定符合開發(fā)者的需求,就可以直接使用它們。我們也可以對(duì)綁定的某些屬性如事務(wù)傳播、可靠性和安全性進(jìn)行調(diào)整與配置,還可以定制自己的綁定。最常見的情況是使用已有的綁定,然后只對(duì)綁定的幾個(gè)方面進(jìn)行配置。應(yīng)用程序開發(fā)者幾乎不需要編寫定制綁定,但這卻是框架開發(fā)者可能需要做的工作。