Каков наилучший способ использования клиента wcf?(памятью) - PullRequest
0 голосов
/ 03 июля 2011

Я читал об использовании памяти клиентом wcf, и то, что я делал до сих пор, может быть ошибочным.
Когда я использовал wcf-клиент, я создал новый wcf-клиент для каждого вызова. (для самостоятельного хостинга и для iis).
это путь? я должен создать одного клиента в качестве члена и использовать его все вокруг?
каково истинное использование памяти клиентом wcf?
Спасибо

1 Ответ

1 голос
/ 03 июля 2011

Я бы подумал, что вам следует создавать нового клиента только тогда, когда вам нужно вызывать сервисные операции из новой конечной точки, но ваша привязка обычно остается прежней.Таким образом, вы можете создать фабричный класс для создания клиентов для конкретного контракта + привязки, но разных конечных точек.Например, следующее будет для 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 - ваш контракт на обслуживание.

...