IHttpClientFactory создаёт новые экземпляры клиента, но переиспользует обработчики `HttpMessageHandler` и их пулы соединений. Поэтому освобождение клиента, полученного от фабрики, не уничтожает пул после каждого запроса.Три способа использования:
• Обычный клиент:
CreateClient() для простых сценариев. Общие настройки тоже можно задать при регистрации.• Именованный:
CreateClient("github") возвращает клиент с настройками конкретного API.• Типизированный:
GitHubClient получает настроенный HttpClient через DI и скрывает детали HTTP за методами сервиса.Например, именованный клиент:
services.AddHttpClient("github", client =>
{
client.BaseAddress = new Uri("https://api.github.com/");
client.DefaultRequestHeaders.UserAgent.ParseAdd("MyApp/1.0");
});
// При использовании:
using var client = factory.CreateClient("github");
Нюанс: типизированный клиент не стоит надолго удерживать в singleton без настройки обновления соединений.
Фабрика также не единственный правильный вариант: Microsoft рекомендует и долгоживущий
HttpClient с настроенным PooledConnectionLifetime. Главное: управлять временем жизни соединений.
