Как избавиться от подключенного сервиса в .Net Standard - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть веб-проект .Net Framework, который ссылается на службу WCF.

Я перевожу этот веб-проект в .Net Standard.Я добавляю ту же службу WCF, что и подключенная служба.Даже если служба WCF та же самая, я могу заметить 2 основных различия:

  1. Клиент имеет номер IDosposable;
  2. Сгенерированы только асинхронные методы.

Хорошо, я изменил весь мой код на поддержку асинхронных методов, но я не уверен, что способ расположения моего класса правильный ... Вот код:

public class MyCustomClient : IMyCustomClient
{
    private bool _disposed;

    WSClient _client;

    public MyCustomClient()
    {
        this._client = new WSClient(WSClient.EndpointConfiguration.WSClientSoap12);
    }

    public async Task<MyResult> DoWorkAsync(...)
    {
        ...
        MyResult something = await this._client.DoWork();
        ...

        return something;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (this._disposed)
            return;

        if (disposing)
        {
            if (this._client.State != System.ServiceModel.CommunicationState.Closed &&
                this._client.State != System.ServiceModel.CommunicationState.Closing)
                this._client.CloseAsync(); //Here the doubt... The Close method is async, but the dispose not.... 

            this._client = null;
        }

        this._disposed = true;
    }
}

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

Спасибо ...

...