Как использовать как IHttpClientFactory, так и Typed HttpClient? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть типизированный HttpClient и (скажем) другой сервис / класс, который использует IHttpClientFactory для получения экземпляра HttpClient.

Чтобы зарегистрировать IHttpClientFactory, я внедряю его как services.AddHttpClient().И чтобы зарегистрировать типизированных клиентов, я использую services.AddHttpClient<MyTypedClient>

. Мой вопрос: как вы думаете, возникнет ли проблема, если я воспользуюсь обоими вариантами использования?Какое-либо влияние на пул HttpMessageHandler?

Спасибо, Cem.

1 Ответ

1 голос
/ 24 июня 2019

Просто нет. Вы можете использовать все, что вы хотите. IHttpClientFactory обрабатывает коллекцию HttpMessageHandler экземпляров. Когда вы вводите типизированный клиент, на самом деле происходит то, что IHttpClientFactory вызывается, и создается новый экземпляр HttpClient, а его обработчику задается либо уже созданный экземпляр HttpMessageHandler, либо новый экземпляр.

Другими словами, это в основном синтаксический сахар. IHttpClientFactory вызывается в любом случае, и он всегда создает новый экземпляр HttpClient, устанавливая обработчик на отслеживание в зависимости от имени. «Типизированный» клиент на самом деле является просто «именованным» клиентом, с типом в качестве имени, и все клиенты в действительности «именуются», потому что все они хранятся в ConcurrentDictionary, где имя является ключом.

...