學習筆記教你使用WCF生成代理
在編程中現在有一個詞代理,想必大家也都知道,下面我們就WCF生成代理和大家分析一下。對于一個好的分布式系統來講,設計時應當考慮到異構性、開放性、安全性、可擴展性、故障處理、并發性以及透明性等問題。基于SOAP的Web Service可以實現異構環境的互操作性,保證了跨平臺的通信。
#T#利用WSE(Web Service Enhancements)可以為ASMX提供安全性的保證。.NET Remoting具有豐富的擴展功能,可以創建定制的信道、格式化器和代理程序。Enterprise Service(COM+)提供了對事務的支持,其中還包括分布式事務,可實現故障的恢復。MSMQ可以支持異步調用、脫機連接、斷點連接等功能,利用消息隊列支持應用程序之間的消息傳遞。從功能角度來看,WCF整合了ASMX、.Net Remoting、Enterprise Service、WSE以及MSMQ等現有技術的優點,它提供了一種構建安全可靠的分布式面向服務系統的統一的框架模型,使軟件研發人員在開發分布式應用時變得更加輕松。
(1)WCF生成代理類
- publicpartialclassSearchApplicationAdminWebServiceClient:System.ServiceModel.ClientBase<ISearchApplicationAdminWebService>,
ISearchApplicationAdminWebService- {
- publicSearchApplicationAdminWebServiceClient()
- {
- InspectorBehaviormessageInspectorBehavior=base.ChannelFactory.Endpoint.Behaviors.Find<InspectorBehavior>();
- if(messageInspectorBehavior==null)
- {
- base.ChannelFactory.Endpoint.Behaviors.Add(newInspectorBehavior());
- }
- }
- ....
- }
(2)WCF生成代理利用channelFactory
- ChannelFactory<ISearchApplicationAdminWebService>channelFactory=newChannelFactory<ISearchApplicationAdminWebService>
("CustomBinding_ISearchApplicationAdminWebService");- InspectorBehaviormessageInspectorBehavior=channelFactory.Endpoint.Behaviors.Find<InspectorBehavior>();
- if(messageInspectorBehavior==null)
- {
- channelFactory.Endpoint.Behaviors.Add(newInspectorBehavior());
- }
- varserver=channelFactory.CreateChannel();