我已经了解了wcf客户端的内存使用情况,到目前为止我所做的可能是错误的 当我使用wcf客户端时,我为每个调用创建了一个新的wcf客户端。 (用于自托管和用于iis) 它是要走的路吗?我应该创建一个客户作为成员并使用它四周? wcf客户端真正的内存使用情况是什么? 谢谢
答案 0 :(得分:1)
我认为只有在需要从新端点调用服务操作时才应创建新客户端,但绑定通常保持不变。因此,您可以创建一个工厂类,以便为特定合同+绑定但不同端点创建客户端。例如,以下内容适用于WebHttpBinding,但您可以替换所需的任何绑定:
public class WebHttpClient<T>
{
protected WebHttpBinding Binding { get; private set; }
public WebHttpClient()
{
// set default binding here
}
public WebHttpClient(WebHttpBinding binding)
{
Binding = binding;
}
public T Get(string uri)
{
EndpointAddress _endpoint = new EndpointAddress(uri);
ChannelFactory<T> _factory = new ChannelFactory<T>(Binding, _endpoint);
_factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
return _factory.CreateChannel();
}
}
其中T是您的服务合同。