在编程中现在有一个词代理,想必大家也都知道,下面我们就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();