WCF中绑定的简单介绍
綁定基本概念
綁定就是一個從通用基礎類型派生出來的運行時類型。綁定中描述了傳輸協議,消息編碼格式和其他的一些用于通信的通信協議。
綁定的種類介紹
| 類型名 | 配置文件使用名 | 描述 |
| BasicHttpBinding | basicHttpBinding | 用于和早期的webservice相兼容 |
| WSHttpBinding | wsHttpBinding | web服務綁定,支持最新的web服務標準WS* |
| WSDualHttpBinding | wsDualHttpBinding | 支持WS*和雙向通信 |
| WSFederationHttpBinding | wsFederationHttpBinding | 支持WS* ,設計到單點登錄的安全相關 |
| NetNamedPipeBinding | netNamedPipeBinding | 面向連接的綁定,在一臺機器上用命名管線通信 |
| NetTcpBinding | netTcpBinding | 面向連接的綁定,通過Tcp進行跨進程和機器的通信 |
| NetPeerTcpBinding | netPeerTcpBinding | 支持端到端的通信 |
| NetMsmqBinding | netMsmqBinding | 支持基于MSMQ的通信 |
| MsmqIntegrationBinding | msmqIntegrationBinding | 支持MSMQ組件的遷移 |
兩種方式來配置端點以及相關聯的綁定
綁定的配置可以使用配置文件的形式或是代碼的形式,如下面的代碼:
配置文件形式(服務端)
<endpoint address="HelloWorld" binding="basicHttpBinding" contract="Service.IHelloWorldService"></endpoint>配置文件形式(客戶端)
<endpoint address="http://localhost:10000/HelloWorld" binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_oec2003" contract="HelloWorld.oec2003"name="BasicHttpBinding_oec2003" />代碼形式
WSHttpBinding wsHttpBinding = new WSHttpBinding(); wsHttpBinding.Security.Mode = SecurityMode.Transport; wsHttpBinding.ReliableSession.Enabled = true; wsHttpBinding.TransactionFlow = true;綁定的功能
每個綁定都必要要提供至少一個傳輸協議,一個消息編碼格式和一個相關的消息版本,除此之外還有一些其他的功能,如安全性、雙向通信、事務等。
傳輸協議:有Http、Https、Tcp、命名管線和MSMQ,這些都有專門的綁定類型與之對應。
消息編碼:描述了消息是如何格式化的,可以使用Binary、Text或Mtom。
消息版本:不管消息的編碼格式如何,消息總是表示為SOAP1.1或是SOAP1.2.
傳輸安全性:指在線傳輸證書、簽名和加密的能力。一般使用SSL。
消息安全性:指獨立于傳輸層的傳輸證書、簽名和加密的能力。
雙向通信:TCP和命名管線可以直接支持,但Http不支持。
這些綁定的功能都是通過配置綁定元素來進行激活看,下面就簡單介紹下綁定元素。
綁定元素
每一種綁定都會有一個綁定元素的集合,像前面提到的傳輸協議、編碼格式等都是綁定元素的一種。綁定元素在Net對應的類型都是繼承自BindingElement類。在WCF中的每一種綁定必須有一個傳輸協議和一個消息編碼格式。傳輸協議的通用綁定元素為TransportBindingElement,有下面一些子類繼承TransportBindingElement,分別代表不同類型的傳輸協議。
HttpTransportBindingElement
HttpsTransportBindingElement
MsmqTransportBindingElement
編碼格式通用綁定元素為MessageEncodingBindingElement,一些子類如下:
BinaryMessageEncodingBindingElement
TextMessageEncodingBindingElement
MtomMessageEncodingBindingElement
還有一些其他的不是必須但是在一些特定場合特別有用的綁定元素:
安全相關:SecurityBindingElement
混合雙向通信:CompositeDuplexBindingElement?? OneWayBindingElement
可靠通信:ReliableSessionBindingElement
事務:TransactionFlowBindingElement
使用上面的綁定元素必須引用命名空間System.ServiceModel.Channels
?
在WCF中使用綁定通常會在配置文件中來進行,盡管也可以用代碼的方式實現,但在配置文件中更加靈活。可以在端點的bindingConfiguration來進行擴展。看下面代碼:
<system.serviceModel><services><service name="Service.HelloWorldService" behaviorConfiguration="HelloWorldBebavior"><endpoint address="HelloWorld" binding="basicHttpBinding" bindingConfiguration="baseBinding_oec2003" contract="Service.IHelloWorldService"></endpoint><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /><host><baseAddresses><add baseAddress="http://localhost:10000/"/></baseAddresses></host></service></services><bindings><basicHttpBinding><binding name="baseBinding_oec2003" maxReceivedMessageSize="10000"transferMode="Buffered"><security mode="Transport"></security></binding></basicHttpBinding></bindings><behaviors><serviceBehaviors><behavior name="HelloWorldBebavior"><serviceMetadata httpGetEnabled="true" /></behavior></serviceBehaviors></behaviors> </system.serviceModel>?
本文只是簡單介紹了下綁定的概念以及綁定的種類,以及使用了一些代碼來說明綁定的運用,關于每種綁定的詳細介紹及用法在后面的博文中介紹。
總結
以上是生活随笔為你收集整理的WCF中绑定的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Forrester:建立企业数据库安全计
- 下一篇: 《开源成长策略——Talend 成功模式