Background Services com o Hosted Service — ASP.NET Core

Renicius Pagotto Fostaini
3 min readJun 10, 2020

--

Hoje vamos falar um pouco sobre o Hosted Service, que é um recurso disponibilizado pela Microsoft na plataforma .NET e que nos ajuda a desenvolver rotinas de processamento em segundo plano.

Como é seu funcionamento?

O Hosted Service fica atrelado a sua aplicação, ou seja, é uma simples classe no qual implementamos uma rotina de processamento em que vai ser executada junto com sua aplicação, porém em background.

Para isso, apenas registramos a nossa classe como um Hosted Service no Startup da nossa aplicação e pronto, toda vez que a aplicação iniciar, o Hosted Service inicia também seu processamento.

E o mais interessante, é que ele independente de configuração de servidor, ou seja, como ele vai estar atrelado a sua aplicação, onde sua aplicação rodar, o Hosted Service vai rodar junto.

Cenários de Uso

Os serviços que rodam em segundo plano são ótimas alternativas para dar apoio a algum tipo de tarefa de nossa aplicação, como por exemplo:

  • Gerar ou processar mensagem de uma mensageria
  • Executar rotinas de atualização de informações
  • Executar rotinas de atualização de cache
  • Geração de relatório
  • Envio de email

Preocupações

Quando utilizamos o Hosted Service, devemos tomar muito cuidado quanto a complexidade da tarefa que vamos delegar a ele, pois ele compartilha o mesmo recurso da sua aplicação e uma tarefa que demanda muito processamento, pode comprometer a performance da sua aplicação como um todo.

Isso pode comprometer também a demanda de criação de uma nova instância, pois quando criamos essa instância, toda nossa aplicação é criada, incluindo todos os hosted services.

Show me the code

Para essa implementação, utilizarei o VS 2019, no entanto, sinta-se livre para utilizar a ferramenta que desejar.

Vamos criar um projeto ASP.NET Core Web Application e caso queira saber mais sobre o que é uma API e como utiliza-la, confira esse post.

Clique em Next, dê um nome ao seu projeto e escolha o template de API na versão 3.1 do ASP.NET Core, conforme mostra a imagem abaixo

Com nosso projeto criado, vamos agora adicionar uma pasta com o nome Hosted Service e uma classe com o nome TimerHostedService, sinta-se livre para definir o nome que achar melhor.

Em nosso exemplo, vamos utilizar uma rotina de processamento que vai ser disparada de 5 em 5 segundos.

Na classe TimerHostedService, vamos implementar o seguinte código

Para rodar as rotinas (tasks) em segundo plano é necessário utilizar a interface IHostedService.

A interface IHostedService nos obriga a implementar dois métodos StartAsync e StopAsync. O método StartAsync é chamado assim que a aplicação inicia e o StopAsync é quando a aplicação está parando sua execução.

Dentro do nosso Timer, definimos o intervalo de tempo entre cada execução (5 em 5 segundos) e passamos o método ExecuteProcess para ser executado a cada iteração.

Com isso, finalizamos a implementação do HostedService, agora é necessário registra-lo no Startup (Startup.cs) da aplicação para que ele posso ser executado.

Agora temos nosso Hosted Service devidamente configurado e pronto para execução.

Ao executar nossa aplicação, além de subir nosso projeto de API, é iniciado também nosso serviço em background, conforme imagem abaixo.

Ficou com dúvida? Deixe nos comentários

Até mais.

Link do projeto: https://github.com/reniciuspagotto/hosted-service-demo

--

--

Renicius Pagotto Fostaini
Renicius Pagotto Fostaini

Written by Renicius Pagotto Fostaini

Solutions Architect | Speaker | Community Manager

Responses (2)