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