Как эффективно использовать HTTPClient (. Net 4.5) для отправки запроса на разные серверы? - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю с устаревшим приложением ASP. NET и хотел бы использовать HTTPClient для отправки HTTP-запросов на несколько разных серверов (то есть с разными BaseAddresses). Я прочитал много постов, в которых говорится, что один экземпляр HTTPClient должен использоваться на протяжении всего срока службы приложения, чтобы избежать «исчерпания сокетов». Но я думаю, что в этом случае использование одного и того же экземпляра для отправки запросов на разные серверы может быть нежизнеспособным.

Так что вместо этого я думаю о написании простого фабричного метода, который примет базовый адрес и либо возвратит new (если он еще не существует) или существующий экземпляр HTTPClient, предварительно настроенный для этого указанного c base-address.

Дальнейшие вызовы для экземпляра HTTPClient будут выполняться из ASP. Net страницы, и поскольку страница может быть запрошена одновременно несколькими пользователями, я хотел бы знать, будет ли проблема с одновременными подключениями, превышающими максимальный предел, установленный для HTTPClient, лежащего в основе ServicePoint (который по умолчанию равен 2 для хостов, отличных от ASP. Net) .

Может кто-нибудь посоветовать, если использование фабричного метода звучит достаточно хорошо или есть лучшее решение для решения этой проблемы? Также нужно ли устанавливать ограничение одновременных подключений на более высокое значение?

Заранее спасибо!

1 Ответ

0 голосов
/ 05 февраля 2020
  1. HttpClient экземпляр на хост здесь полностью уместен. Истощение сокета обычно происходит в количестве в тысячи; Вы должны быть в порядке с «горсткой» хостов. И сокет в любом случае указывает c на 1 хост, так что вы ничего не получите в плане сохранения сокета, используя один экземпляр HttpClient с несколькими хостами.

  2. Да, я бы Обязательно рассмотрите возможность повышения ServicePointManager.DefaultConnectionLimit в этом сценарии. Как высоко? Очевидно, зависит от вашего сценария, но в большинстве хостинговых сред 100 и даже более должны быть совершенно безопасными.

...