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