学习 WCF (5)--学习Binding的使用
網絡通信離不開網絡協議的支持,在WCF中,給發開人員提供了很多傳輸協議進行綁定。比如:BasicHttpBinding,NetTcpBinding,WSHttpBinding 等等。對于初學者來說,很容易就被多種協議弄迷糊,不知道什么樣的情況用哪個協議,這里就簡單的說下。希望對新手學習WCF有幫助。
? 其實我也是在一邊學習一邊總結,前些天寫了兩個WCF服務,但是通過VS2008調用的時候,配置文件中的Binding卻出現了兩種不同的情況:
一個服務提供一個方法,用于返回一個數據集DataSet,添加服務引用時,Web.config中:
Code<endpoint?address="http://gao/WcfService1/Service1.svc"?binding="wsHttpBinding"????????????????bindingConfiguration="WSHttpBinding_IService1"?contract="ServiceReference1.IService1"
????????????????name="WSHttpBinding_IService1">
另一個服務提供一個方法,返回的是一個集合List,Web.config中:
Code<endpoint?address="http://gao/SLGetDataByAdoWeb/SLGetDataWCF.svc"????????????????binding="basicHttpBinding"?bindingConfiguration="BasicHttpBinding_ISLGetDataWCF"
????????????????contract="ServiceReference2.ISLGetDataWCF"?name="BasicHttpBinding_ISLGetDataWCF"?/>
兩個返回值不同的WCF服務,在添加服務引用的時候卻出現了不同的Binding,也不知道開發環境是通過什么自動生成的(高手指教)。更嚴重的是以wsHttpBinding為binding的服務在跨機器調用的時候會出現問題,看樣子這個Binding的類型很值得研究一下。
WCF中的綁定
綁定描述了服務傳輸的通信方式,使用綁定可以指定:傳輸的協議,安全要求,編碼方式,事務處理要求,可靠性等。
綁定包括多個綁定元素,他們描述了所有綁定要求,可以創建定制的綁定,也可以使用預定義綁定,如下:
??? 基本綁定(Basic Binding)
由BasicHttpBinding類提供。基本綁定能夠將WCF服務公開為舊的ASMX Web服務,使得舊的客戶端能夠與新的服務協作。如果客戶端使用了基本綁定,那么新的WCF客戶端就能夠與舊的ASMX服務協作。
TCP綁定
由NetTcpBinding類提供。TCP綁定使用TCP協議實現在Intranet中跨機器的通信。TCP綁定支持多種特性,包括可靠性、事務性、安全性以及WCF之間通信的優化。前提是,它要求客戶端與服務都必須使用WCF。
對等網綁定
由NetPeerTcpBinding類提供。它使用對等網進行傳輸。對等網允許客戶端與服務訂閱相同的網格(Grid),實現廣播消息。因為對等網需要網格拓撲(Grid Topology)與網狀計算策略(Mesh Computing Strategies)方面的知識。
IPC綁定
由NetNamedPipeBinding類提供。它使用命名管道為同一機器的通信進行傳輸。這種綁定方式最安全,因為它不能接收來自機器外部的調用。IPC綁定支持的特性與TCP綁定相似。
Web服務(WS)綁定
由WSHttpBinding類提供。WS綁定使用HTTP或HTTPS進行傳輸,為基于Internet的通信提供了諸如可靠性、事務性與安全性等特性。
WS聯邦綁定(Federated WS Binding)
由WSFederationHttpBinding類提供。WS聯邦綁定是一種特殊的WS綁定,提供對聯邦安全(Federated Security)的支持。
WS雙向綁定(Duplex WS Binding)
由WSDualHttpBinding類提供。WS雙向綁定與WS綁定相似,但它還支持從服務到客戶端的雙向通信。
MSMQ綁定
由NetMsmqBinding類提供。它使用MSMQ進行傳輸,用以提供對斷開的隊列調用的支持。
MSMQ集成綁定(MSMQ Integration Binding)
由MsmqIntegrationBinding類提供。它實現了WCF消息與MSMQ消息之間的轉換,用以支持與舊的MSMQ客戶端之間的互操作。
不同的綁定支持不同的特性。以WS開頭的綁定是獨立于平臺的,支持Web服務的規范。以Net開通的綁定使用的是二進制格式,使得.NET應用程序之間的通信有很好的性能。其他特性有支持會話,可靠的會話,事務處理和雙向通信。
綁定的傳輸協議與編碼格式
綁定與安全
這里有個不錯的文章推薦給大家,可能對大家有幫助:http://msdn.microsoft.com/zh-cn/magazine/cc163382.aspx
綁定與可靠性
綁定協議名稱??????????? 支持可靠性???????? 默認可靠性?????????? 支持有序傳遞?????? 默認有序傳遞
BasicHttpBinding??????????????? No?????????????? N/A??????????????????? No????????????????? N/A
NetTcpBinding?????????????????? Yes?????????????? Off??????????????????? Yes????????????????? On
NetPeerTcpBinding????????????? No??????????????? N/A?????????????????? No????????????????? N/A
NetNamedPipeBinding????????? No??????????????? N/A (On)?????????? Yes????????????????? N/A (On)
WSHttpBinding????????????????? Yes?????????????? Off??????????????????? Yes????????????????? On
WSFederationHttpBinding?? Yes?????????????? Off???????????????????? Yes????????????????? On
WSDualHttpBinding??????????? Yes?????????????? On???????????????????? Yes????????????????? On
NetMsmqBinding???????????????? No??????????????? N/A??????????????????? No?????????????????? N/A
MsmqIntegrationBinding?????? No?????????????? N/A??????????????????? No?????????????????? N/A
WS綁定協議一般都提供了對可靠性傳遞的支持,可以編程或者配置方式在項目里啟用。可靠性傳輸要根據綁定的目標場景而定。
綁定的合理使用
WCF為我們提供了這么多種預定義綁定,我們在開發中不同的場景應該應用哪個綁定呢?當然,我們有時可以不考慮,開發環境為我們自定的完成。但是如果我們手動的代碼定義,那應該注意哪些呢?這里提出幾點供大家參考:
1.BasicHttpBinding: 一個綁定,適用于與符合 WS-Basic Profile 的 Web 服務(例如基于 ASP.NET Web 服務 (ASMX) 的服務)進行的通信。此綁定使用 HTTP 作為傳輸協議,并使用文本/XML 作為默認的消息編碼。
2.WSHttpBinding: 一個安全且可互操作的綁定,適合于非雙工服務約定。
3.WS2007HttpBinding: 一個安全且可互操作的綁定,可為 Security, ReliableSession 的正確版本和 TransactionFlow 綁定元素提供支持。
4.WSDualHttpBinding: 一個安全且可互操作的綁定,適用于雙工服務協定或通過 SOAP 媒介進行的通信。
5.WSFederationHttpBinding: 一個安全且可互操作的綁定,支持 WS 聯合協議并使聯合中的組織可以高效地對用戶進行身份驗證和授權。
6.WS2007FederationHttpBinding: 一個安全且可互操作的綁定,它派生自 WS2007HttpBinding 并支持聯合安全性。
7.NetTcpBinding: 一個安全且經過優化的綁定,適用于 WCF 應用程序之間跨計算機的通信。
8.NetNamedPipeBinding: 一個安全、可靠且經過優化的綁定,適用于 WCF 應用程序之間計算機上的通信。
9.NetMsmqBinding: 一個排隊綁定,適用于 WCF 應用程序之間的跨計算機的通信。
10.NetPeerTcpBinding: 一個支持多計算機安全通信的綁定。
11.WebHttpBinding: 一個綁定,可用于為通過 HTTP 請求(而不是 SOAP 消息)公開的 WCF Web 服務配置終結點。
12.MsmqIntegrationBinding: 一個綁定,適用于 WCF 應用程序和現有消息隊列(也稱為 MSMQ)應用程序之間跨計算機的通信。
比較常見的就是BasicHttpBinding,主要兼容老的Web 服務。WSDualHttpBinding用來做WCF回調,IIS托管的時候使用的比較多。
NetTcpBinding,企業局域網內部通信,效率高,支持多種安全機制策略,MsmqIntegrationBinding,主要是做WCF消息隊列相關的開發。
這里感謝老徐:http://frank_xl.cnblogs.com對我的指導和幫助。有什么不正確的地方還希望大家指正。
??? 文章作者:高維鵬(Brian)
??? 文章出處:http://www.cnblogs.com/gaoweipeng
??? 歡迎轉載,轉載時請注明出處。謝謝合作。
總結
以上是生活随笔為你收集整理的学习 WCF (5)--学习Binding的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习 WCF (4)--学会使用配置文件
- 下一篇: 小雪花歌曲视频(小雪花歌曲简谱)