HttpClientFactory no .NET 5.0

Reaproveitamento dos pools de conexões, reduzindo o consumo de recursos do socket, este é o resumo da utilização do HttpClientFactory no .NET.

Introdução

Não saber utilizar corretamente o HttpClient no .NET é um erro clássico, como criar várias instâncias no projeto, isso causa um acúmulo de utilização de sockets, aumentando o consumo de processamento e o famoso memory leak.

A criação de uma instância HttpClient cria internamente uma cadeia HttpMessageHandler, que é responsável por estabelecer uma conexão. Portanto, quando descartamos o HttpClient, na verdade descartamos o HttpMessageHandler, que acabará fechando a conexão. O risco é que a conexão não seja fechada assim que o cliente for descartado.

Uma solução para o problema acima era ter uma única instância de um HttpClient que seria compartilhada em toda aplicação.

Mas, o problema em utilizar uma única instância na solução é que as conexões seriam mantidas abertas e reutilizadas para sempre e quaisquer alterações de DNS feitas nos serviços remotos não seriam respeitadas.

Isso faria com que a aplicação apontassem para instâncias de servidor offline ou ambientes incorretos.

Apresentando a HttpClientFactory

  • O HttpClientFactory foi introduzido com .NET Core 2.1.
  • O HttpClientFactory nos dá um local central para configurar e criar HttpClients.
  • Ele gerencia o tempo de vida das cadeias HttpMessageHandler subjacentes. Ele faz isso gerenciando um pool desses MessageHandlers e mantendo-os abertos até que expirem.
  • Os MessageHandlers são mantidos ativos por no máximo 2 minutos.
  • O uso é simples e requer mudanças mínimas de código em sua aplicação.
  • Apenas chamar o método de extensão AddHttpClient no IServiceCollection oferece as vantagens do gerenciamento de instâncias pronto para uso.
  • Ele permite que você injete o HttpClientFactory em qualquer lugar da sua aplicação.

Exemplo de utilização do HttpClientFactory

O código abaixo é um exemplo de utilização do HttpClientFactory com o Polly, onde trabalharemos a resiliência.

Depois de ser registrado em seu startup.cs, agora precisamos consumir este HttpClient, conforme o código de exemplo abaixo:

Repare que nenhuma instância do HttpClient foi criado, simplesmente é reutilizado da nossa configuração no startup.cs, o que deixa seu código muito mais performático e organizado.

O exemplo completo de utilização do HttpClientFactory com o Polly, você confere no link abaixo:

https://github.com/hgmauri/sample-httpclientfactory-polly

Deixe uma resposta