日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

WinVista新技術(shù) WCF開(kāi)發(fā)指南之構(gòu)建服務(wù)( 五 )



你可以使用WCF提供的綁定,也就是說(shuō),你或者可以"濃縮"它們的屬性,或者是從頭編寫(xiě)通訊自己的定制綁定 。一個(gè)服務(wù)在它的元數(shù)據(jù)中出版它的綁定選擇,這使得客戶端能夠查詢這種類型和綁定的特定屬性,因?yàn)榭蛻舳吮仨毷褂门c服務(wù)完全一樣的綁定 。單個(gè)服務(wù)能夠支持在獨(dú)立的地址上的多個(gè)綁定 。

通常,服務(wù)并不指定關(guān)于綁定本身 。WCF定義了列舉于表格1中的共9種標(biāo)準(zhǔn)綁定 ?;谖谋镜木幋a使一個(gè)WCF服務(wù)(或客戶端)能夠通過(guò)HTTP與任何其它服務(wù)(或客戶端)進(jìn)行交流而不考慮它的技術(shù);然而,通過(guò)TCP或IPC的二進(jìn)制編碼傳輸能夠產(chǎn)生最優(yōu)的性能,但是卻以失去極廣泛的互操作性為代價(jià)(因?yàn)樗仨毷褂肳CF到WCF的通訊) 。

表格1:WCF標(biāo)準(zhǔn)綁定

名稱傳輸編碼InteropBasicHttpBindingHTTP/HTTPSTextNetTcpBindingTCPBinary-NetPeerTcpBindingP2PBinary-NetNamedPipeBindingIPCBinary-WSHttpBindingHTTP/HTTPSText,MTOM WSFederationBindingHTTP/HTTPSText,MTOM WSDualHttpBindingHTTPText,MTOM NetMsmqBindingMSMQBinary-MsmqIntegrationBindingMSMQBinary
為一個(gè)傳輸協(xié)議選擇MSMQ能夠強(qiáng)制實(shí)現(xiàn)WCF到WCF或WCF到MSQM的通訊,但是,這僅是針對(duì)非連接的離線工作情況提供的 。典型情況下,為通訊服務(wù)選擇一個(gè)綁定應(yīng)該遵循如圖4所示的策略活動(dòng)圖 。


圖4.策略活動(dòng)圖:該圖展示了選擇一個(gè)綁定的過(guò)程 。
你應(yīng)該問(wèn)自己的第一個(gè)問(wèn)題是,是否通訊服務(wù)需要與非WCF客戶進(jìn)行交互 。如果回答"是",并且如果客戶端是一個(gè)舊的MSMQ客戶端,那么應(yīng)該選擇NetMsmqBinding-它可以使通訊服務(wù)與這樣的一個(gè)客戶端通過(guò)MSMQ進(jìn)行互操作 。如果你需要與一非WCF客戶端進(jìn)行互操作并且該客戶端期望使用基本的Web服務(wù)協(xié)議(ASMX Web服務(wù)),那么,你可以選擇BasicHttpBinding-它能夠把通訊WCF服務(wù)暴露到外界,就好象它是一個(gè)ASMX Web服務(wù)一樣 。

缺點(diǎn)是你不能利用任何現(xiàn)代WS-*協(xié)議 。然而,如果非WCF客戶端能理解這些標(biāo)準(zhǔn),那么,你可以選擇WS綁定之一,例如WSHttpBinding,WSFederationBinding或WSDualHttpBinding 。如果你可以假定客戶端是一個(gè)WCF客戶端,但它要求離線或非連接性交互,那么你可以選擇使用MSMQ的NetMsmqBinding來(lái)傳輸消息 。如果客戶端需要連接的通訊但能夠跨越計(jì)算機(jī)邊界被調(diào)用,那么你可以選擇通過(guò)TCP進(jìn)行通訊的NetTcpBinding 。

如果客戶端位于與服務(wù)同一臺(tái)計(jì)算機(jī)上,那么你可以選擇使用命名管道的NetNamedPipeBinding來(lái)(IPC)最優(yōu)化性能 。注意,一個(gè)使用NetNamedPipeBinding的服務(wù)不能接受除它自己以外的來(lái)自任何其它計(jì)算機(jī)的調(diào)用,并且這樣也會(huì)更為安全 。你可以基于其它標(biāo)準(zhǔn)(例如,回調(diào)需要(WSDualHttpBinding),端對(duì)端網(wǎng)絡(luò)(NetPeerTcpBinding)或聯(lián)盟安全(WSFederationBinding))來(lái)詳細(xì)地調(diào)整綁定選擇 。

十. 端點(diǎn)

每一個(gè)服務(wù)都關(guān)聯(lián)于一個(gè)定義了該服務(wù)所在位置的地址,一個(gè)定義了如何與服務(wù)進(jìn)行通訊的綁定和一個(gè)定義了該服務(wù)所實(shí)現(xiàn)功能的合同 。

事實(shí)上,WCF用端點(diǎn)的形式來(lái)形式化描述這種關(guān)系 。該端點(diǎn)是地址、合同和綁定的一個(gè)結(jié)合(見(jiàn)圖5) 。每一個(gè)服務(wù)必須具有三個(gè)端點(diǎn),而且由服務(wù)暴露該端點(diǎn) 。從邏輯上講,端點(diǎn)是服務(wù)的接口,并且類似于一個(gè)CLR或COM接口 。


圖5.該端點(diǎn)是地址、合同和綁定的結(jié)合
每一個(gè)服務(wù)必須暴露至少一個(gè)業(yè)務(wù)端點(diǎn),并且每一個(gè)端點(diǎn)都具有一個(gè)相同的合同 。在一個(gè)服務(wù)上的所有的端點(diǎn)都具有唯一的地址,而單個(gè)服務(wù)可以暴露多個(gè)端點(diǎn) 。這些端點(diǎn)能夠使用相同的或不同的綁定并能暴露相同的或不同的合同 。你可以使用一個(gè)配置文件來(lái)以管理方式配置端點(diǎn)或以編程方式來(lái)實(shí)現(xiàn)端點(diǎn)配置 。

【W(wǎng)inVista新技術(shù) WCF開(kāi)發(fā)指南之構(gòu)建服務(wù)】

推薦閱讀