WCF配置綁定基本概念淺析
WCF對(duì)于開發(fā)人員來說是一個(gè)比較重要的開發(fā)插件,可以幫助我們輕松的實(shí)現(xiàn)一些特定的功能。在這里我們就先來了解一下WCF配置綁定的相關(guān)內(nèi)容。通過編程方式或管理方式都可以WCF配置可靠性(以及有序傳遞)。如果我們啟用了可靠性,則客戶端與服務(wù)宿主端必須保持一致,否則客戶端無(wú)法與服務(wù)通信。我們可以只對(duì)支持它的WCF配置綁定。例所示的服務(wù)端配置文件,使用了綁定配置節(jié),啟用了TCP綁定的可靠性。
例:?jiǎn)⒂肨CP綁定的可靠性
- < system.serviceModel>
 - < services>
 - < service name = "MyService">
 - < endpoint address = "net.tcp://localhost:8000/MyService"
 
binding = "netTcpBinding" bindingConfiguration = "ReliableTCP"
contract = "IMyContract"/>- < /service>
 - < /services>
 - < bindings>
 - < netTcpBinding>
 - < binding name = "ReliableTCP"> < reliableSession enabled = "true"/>
 - < /binding>
 - < /netTcpBinding>
 - < /bindings>
 - < /system.serviceModel>
 
至于編程配置方式,TCP綁定和WS綁定提供了略微不同的屬性來實(shí)現(xiàn)WCF配置綁定。例如,NetTcpBinding綁定接受一個(gè)Boolean型的構(gòu)造函數(shù)參數(shù),用來啟動(dòng)可靠性:
- public class NetTcpBinding : Binding,...
 - {
 - public NetTcpBinding(...,bool reliableSessionEnabled);
 - //更多成員
 - }
 
我們只能在對(duì)象的構(gòu)造期間啟用可靠性。如果通過編程方式設(shè)置可靠性,需要?jiǎng)?chuàng)建支持可靠性的綁定對(duì)象:
- Binding reliableTcpBinding = new NetTcpBinding(...,true);
 
NetTcpBinding定義了只讀的ReliableSession類,通過它獲取可靠性的狀態(tài):
- public class ReliableSession {
 - public TimeSpan InactivityTimeout {get;set;}
 - public bool Ordered {get;set;}
 - //更多成員 }
 - public class OptionalReliableSession : ReliableSession {
 - public bool Enabled {get;set;}
 - //更多成員 }
 - public class NetTcpBinding : Binding,... {
 - public OptionalReliableSession ReliableSession {get;}
 - //更多成員 }
 
理論上,服務(wù)代碼和契約定義應(yīng)該與它使用的綁定及屬性無(wú)關(guān)。服務(wù)不應(yīng)該考慮綁定,在服務(wù)代碼中也不應(yīng)該包含它所使用的綁定。不管WCF配置綁定是哪一種,服務(wù)都應(yīng)該能夠正常工作。然而實(shí)際上,服務(wù)的實(shí)現(xiàn)或者契約本身都會(huì)依賴于消息的有序傳遞(Ordered Delivery)。為了幫助契約或服務(wù)的開發(fā)者能夠約束支持的綁定,WCF定義了DeliveryRequirementsA。
【編輯推薦】















 
 
 
 
 
 
 