我的应用程序需要与多个外部WCF服务通信以满足来自客户端应用程序的请求。作为WCF服务,它当然必须能够同时处理多个请求。既然如此,由于我将访问多个服务,我想到了以下列方式对客户进行分组:
public static class ClientManager
{
private static readonly Service1Client _service1Client = new Service1Client();
private static readonly Service2Client _service2Client = new Service2Client();
...
public static Service1Client Service1DefaultClient { get { return _service1Client; } }
public static Service2Client Service2DefaultClient { get { return _service2Client; } }
}
然后,从剩下的代码中,我只需要执行
ClientManager.Service1DefaultClient.SomeMethod();
ClientManager.Service2DefaultClient.SomeMethod();
...
我们的想法是创建一个更好地管理WCF客户端的中心位置。但是,我真的不知道这种设计是否适用于同时向Service1DefaultClient
和Service2DefaultClient
发出多个请求的服务。你有什么建议?创建一个更复杂的客户端池,其中包含来自每个服务的多个代理以供选择?
答案 0 :(得分:3)
拥有静态客户端代理对我来说不是一个好主意。
由于ChannelFactory caching,代理相对轻量级,因此每次需要时我都会创建一个新实例。