[英]Dynamic Channel Factory in WCF
我在我的WCF服务中使用以下代码来调用另一个可能是也可能不是WCF服务的Web服务。
ChannelFactory<IService1> myChannelFactory = new ChannelFactory<IService1>
(myBinding, myEndpoint);
所以我希望在xml文件中有一些信息,我从中读取各种服务端点,并希望将绑定信息传递给通道工厂,并根据配置XML文件中的信息调用其他服务。
所以我想每次使用不同的服务合同信息动态生成通道工厂。
是否可以在渠道工厂中使用各种服务具有不同的接口?
换句话说,从上面的代码我有IService1但是当我从xml文件中读取另一个服务信息时,我想用另一个接口创建一个通道?
是的,通过泛型可以:
public static T CreateProxyChannel<T>()
{
string endpointUri = GetServiceEndpoint(typeof(T));
ChannelFactory<T> factory = new ChannelFactory<T>(myBinding, new EndpointAddress(new Uri(endpointUri)));
return factory.CreateChannel();
}
并且GetServiceEndpoint
方法根据T的类型返回端点:
private static string GetServiceEndpoint(Type service)
{
string serviceTypeName = service.Name;
// Code to get and return the endpoint for this service type
}
请注意,在这种情况下,我希望配置文件具有与服务类型名称关联的端点(例如IService1
和http://localhost/Service1.svc
)。
最后使用它:
IService1 serviceProxy1 = CreateProxyChannel<IService1>();
serviceProxy1.MyMethod();
IService2 serviceProxy2 = CreateProxyChannel<IService2>();
serviceProxy2.AnotherMethod();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.