WCF从理论到实践(5):Binding细解(转)
本文的出發(fā)點(diǎn):
通過閱讀本文,您能了解以下知識:
本文適合的讀者:
本文適合WCF的初學(xué)者
WCF中的Binding是什么?
在弄清Binding是什么之前,我們先看一下WCF的中的Endpoint結(jié)構(gòu),一個(gè)Endpoint就類似于xml web service中的一個(gè)asmx文件,它包括三個(gè)組成部分1)Address 2) Binding 3) Contract,此三者被稱為組成Endpoint的"ABC",下圖闡述了Endpoint的組成結(jié)構(gòu):
ABC分別解決了Endpoint的如下問題:
A解決了Endpoint在哪的問題,也就是"Where is the endpoint?"
B 解決的是如何與Endpoint通訊的問題,也就是"How to communicate with endpoint?"
C解決了Endpoint提供什么功能的問題,也就是"What functionalities do the endpoint provide?"
上面的兩篇文章WCF從理論到實(shí)踐三:八號當(dāng)鋪之黑色契約和WCF從理論到實(shí)踐四:路在何方分別闡述了Contract和Address,本文著重討論Binding, Binding實(shí)現(xiàn)的是在客戶端和服務(wù)端進(jìn)行通訊的底層細(xì)節(jié),包括數(shù)據(jù)如何傳輸(比如采用Tcp,Http等),如何解決安全問題(SSL,Message Level Security等),傳輸?shù)南⒌母袷?#xff08;如text/xml,MTOM,binary等)。
Binding的組成?
Binding包括三個(gè)組成部分:NameSpace,Name和BindingElement,如下圖所示:
Name和NameSpace是服務(wù)元數(shù)據(jù)(meta date)的唯一標(biāo)志,換句話說,二者就像Binding的姓名一樣,而BindingElement則描述Binding的特征,我們說Binding能解決通訊方式的問題,關(guān)鍵是靠BindingElement來進(jìn)行描述。
Binding Element 的分類
Binding Element中最核心的組成部分,它分為以下三種類型
義,每一個(gè)Binding Element 必須包含一個(gè)Transport Binding Element
Binding描述了哪些層面的信息
一個(gè)Binding包含著豐富的信息,每種信息都描述了服務(wù)端和客戶端交互過程中的一方面,如下表所示,Binding描述了這些層面的信息:
| 層次 | 備注說明 |
| Transactions(事務(wù)) | TransactionFlowBindingElement,用于指定事務(wù)流程 |
| Reliability(信賴) | ReliableSessionBindingElement,用于指定對會話方式 |
| Security(安全) | SecurityBindingElement,指定安全方式 |
| Encoding(編碼) | Text, Binary, MTOM, Custom,指定數(shù)據(jù)傳輸格式 |
| Transport(傳輸) | TCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom,指定傳輸方式 |
?
選擇正確的Binding
Binding是可以自定義實(shí)現(xiàn)的,可WCF框架已經(jīng)為我們實(shí)現(xiàn)了足夠多的Binding,供我們來選擇,如下表所示:
| Binding名稱 | Configuration Element | 描述 |
| BasicHttpBinding | basicHttpBinding | 一個(gè)指定用符合基本網(wǎng)絡(luò)服務(wù)規(guī)范通訊的binding,它用http進(jìn)行傳輸,數(shù)據(jù)格式為text/xml |
| WSHttpBinding | wsHttpBinding | 一個(gè)安全的通用的binding,但它不能在deplex中使用 |
| WSDualHttpBinding | wsDualHttpBinding | 一個(gè)安全的通用的binding,但能在deplex中使用 |
| WSFederationHttpBinding | wsFederationHttpBinding | 一個(gè)安全的通用的支持WSF的binding,能對用戶進(jìn)行驗(yàn)證和授權(quán) |
| NetTcpBinding | netTcpBinding | 在wcf應(yīng)用程序中最適合跨機(jī)器進(jìn)行安全通訊的binding |
| NetNamedPipeBinding | netNamedPipeBinding | 在wcf應(yīng)用程序中最適合本機(jī)進(jìn)行安全通訊的binding |
| NetMsmqBinding | netMsmqBinding | 在wcf應(yīng)用程序中最適合跨機(jī)器進(jìn)行安全通訊的binding,并且支持排隊(duì) |
| NetPeerTcpBinding | netPeerTcpBinding | 一個(gè)支持安全的,多機(jī)交互的binding |
| MsmqIntegrationBinding | msmqIntegrationBinding | 一個(gè)用于wcf與現(xiàn)有msmq程序進(jìn)行安全通訊的binding |
?
下面的表格分別刪除了上表中的Binding在互操作性(Interoperability), 安全性(Security), 是否支持會話(Session), 是否支持事務(wù)(Transactions)和是否為全雙工(Duplex)上不同。
| Bingding | Interoperability | Security | Session | Transactions | Duplex |
| BasicHttpBinding | Basic Profile 1.1 | (None), Transport, Message | None, (None) | None | n/a |
| WSHttpBinding | WS | Transport, (Message), Mixed | (None), Transport, Reliable Session | (None), Yes | n/a |
| WSDualHttpBinding | WS | (Message) | (Reliable Session) | (None), Yes | Yes |
| WSFederationHttpBinding | WS-Federation | (Message) | (None), Reliable Session | (None), Yes | No |
| NetTcpBinding | .NET | (Transport), Message | Reliable Session, (Transport) | (None), Yes | Yes |
| NetNamedPipeBinding | .NET | (Transport) | None, (Transport) | (None), Yes | Yes |
| NetMsmqBinding | .NET | Message, (Transport), Both | (None) | (None), Yes | No |
| NetPeerTcpBinding | Peer | (Transport) | (None) | (None) | Yes |
| MsmqIntegrationBinding | MSMQ | (Transport) | (None) | (None), Yes | n/a |
例外,《Programming WCF Services》有一幅圖也能說明各自的特征:
下面的圖給出了我們選擇Binding的方式
本文參考資料:
轉(zhuǎn)載于:https://www.cnblogs.com/yanbinboy/archive/2008/06/05/1214355.html
總結(jié)
以上是生活随笔為你收集整理的WCF从理论到实践(5):Binding细解(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 35岁小贝荣膺终身成就奖
- 下一篇: SharePoint 2010: 对于开