Использование статического HttpClient против другого HTTPClient для каждого набора конечных точек - PullRequest
0 голосов
/ 20 мая 2018

Так что мое приложение включает в себя множество сетевых вызовов (возможно, подключение к 10 различным серверам) и получение данных.Из пары статей, которые я прочитал, предлагается повторное использование экземпляра HTTPClient, поскольку это предотвращает потерю ресурсов (сокетов и тому подобное).Но я нахожу, что трудно создать модуль на основе статического HTTPClient, который является расширяемым и надежным.Все соединения с моим сервером требуют разных наборов заголовков, параметров запроса и тому подобного.Будет ли лучше использовать один HTTPClient на модель сервера / конечной точки.

1 Ответ

0 голосов
/ 21 мая 2018

Будет проще, если вы создадите экземпляр HttpClient для каждого сервера.

Вы можете создать одноэлементный класс в качестве оболочки для статического httpClient и передать его с помощью механизма внедрения зависимостей:

public class ServerAClient {
  private HttpClient _client;
  private static object _locker = new object();

  public static HttpClient GetInstance() {
    if (_client == null) {
      lock (_locker) {
        // create your httpclient here
        _client = instance;
      }
    }

    return _client;
  }
}

public class MyController : Controller {
  private readonly ServerAClient _aclient;
  public MyController(ServerAClient Aclient) {
    _aclient = Aclient;
  }

  public IHttpAction Index() {
    ...
   _aclient.DoSomething();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...