HttpClientFactory: solução para os problemas do HttpClient

Em um post anterior, tratamos sobre como usar e como não usar o HttpClient em .NET. Entretanto, não mencionamos uma abordagem mais recente, proposta pela própria Microsoft: HttpClientFactory.

NOTA: Há um excelente post sobre HttpClientFactory, da Microsoft, indicando as vantagens, com diversos exemplos explorando suas features.

Recomendamos muito a leitura do post da Microsoft por aprofundar o que mostramos aqui, com cenários além deste que estamos abordando.

Problema ao manter HttpClient em um Singleton

Uma instância de HttpClient, preservada em um singleton, mantém conexões e não respeita o TTL do DNS. Assim, nunca são atualizadas.

Suponha que você esteja consumindo um serviço que pode ter seu IP mudado, por exemplo um IP dinâmico, você passará a ter problemas e certamente o serviço deixará de responder.

HttpClientFactory

A classe HttpClientFactory, que implementa a interface IHttpClientFactory resolve os problemas que indicamos em HttpClient que indicamos no post anterior. Ou seja, ela gerencia adequadamente as instâncias do HttpClient fazendo a “coisa certa”.

Com HttpClientFactory, é possível determinar um “tempo de vida” para cada instância de HttpClient fazendo com que o problema que destacamos acima seja mitigado.

var serviceCollection = new ServiceCollection();
    serviceCollection
       .AddHttpClient("eximia")
       .SetHandlerLifetime(TimeSpan.FromMinutes(5));

var serviceProvider = serviceCollection.BuildServiceProvider();

HttpClientFactory, idealmente, terá sua instância injetada.

Obter um client utilizando CreateClient de IHttpClientFactory, cria uma nova instância de HttpClient, se for necessário. Afinal, internamente, HttpClientFactory mantém pools para reaproveitamento, reduzindo o consumo de recursos, como sockets.

A imagem abaixa, extraída do post que recomendamos, mostra como a Microsoft explica HttpClientFactory

O vídeo abaixo mostra o resultado do código acima e podemos perceber como o HttpClientFactory gerencia corretamente os sockets.

A performance do HttpClientFactory comparada com HttpClient usando BenchmarkDotNet

Impossível não reconhecer as melhorias de performance que o HttpClientFactory trouxe no .NET Core.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Gerson Bueno
Gerson Bueno
1 ano atrás

Impressionante a diferença na performance! Obrigado por compartilhar os resultados. Fiquei curioso sobre como foi feita a implementação desse benchmark. É possível ter acesso ao código?

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
1
0
Queremos saber a sua opinião, deixe seu comentáriox
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

HttpClientFactory: solução para os problemas do HttpClient

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

HttpClientFactory: solução para os problemas do HttpClient

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?