使用wcf客户端的最佳方法是什么? (记忆明智)

时间:2011-07-03 07:12:53

标签: c# wcf wcf-client

我已经了解了wcf客户端的内存使用情况,到目前为止我所做的可能是错误的 当我使用wcf客户端时,我为每个调用创建了一个新的wcf客户端。 (用于自托管和用于iis) 它是要走的路吗?我应该创建一个客户作为成员并使用它四周? wcf客户端真正的内存使用情况是什么? 谢谢

1 个答案:

答案 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是您的服务合同。