WCF配置綁定基本概念淺析
WCF對于開發(fā)人員來說是一個比較重要的開發(fā)插件,可以幫助我們輕松的實現(xiàn)一些特定的功能。在這里我們就先來了解一下WCF配置綁定的相關內(nèi)容。通過編程方式或管理方式都可以WCF配置可靠性(以及有序傳遞)。如果我們啟用了可靠性,則客戶端與服務宿主端必須保持一致,否則客戶端無法與服務通信。我們可以只對支持它的WCF配置綁定。例所示的服務端配置文件,使用了綁定配置節(jié),啟用了TCP綁定的可靠性。
例:啟用TCP綁定的可靠性
- < 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綁定提供了略微不同的屬性來實現(xiàn)WCF配置綁定。例如,NetTcpBinding綁定接受一個Boolean型的構(gòu)造函數(shù)參數(shù),用來啟動可靠性:
- public class NetTcpBinding : Binding,...
- {
- public NetTcpBinding(...,bool reliableSessionEnabled);
- //更多成員
- }
我們只能在對象的構(gòu)造期間啟用可靠性。如果通過編程方式設置可靠性,需要創(chuàng)建支持可靠性的綁定對象:
- 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;}
- //更多成員 }
理論上,服務代碼和契約定義應該與它使用的綁定及屬性無關。服務不應該考慮綁定,在服務代碼中也不應該包含它所使用的綁定。不管WCF配置綁定是哪一種,服務都應該能夠正常工作。然而實際上,服務的實現(xiàn)或者契約本身都會依賴于消息的有序傳遞(Ordered Delivery)。為了幫助契約或服務的開發(fā)者能夠約束支持的綁定,WCF定義了DeliveryRequirementsA。
【編輯推薦】