Worker Services no .NET ! O que são ? para que servem ? Onde habitam?

Marcio Nizzola
4 min readMay 4, 2022

--

Worker Services no .NET ! O que são ? para que servem ? Onde habitam?

O que são Worker Services ?

Também chamados de serviços de longa execução, nada mais são do que aplicações que rodam por tempo indefinido, em segundo plano, executando tarefas onde os usuários não veem.

Em versões anteriores, eram criados “Windows Services Applications” ou “Console Applications” para esta finalidade, mas a partir do .NET 3 foram disponibilizados os modelos de Worker Service Applications para esta finalidade.

Eles podem ser usados para monitorar filas de execução, tabelas de bancos de dados, serviços para envio de e-mails, validação de status de serviços de terceiros, entre muitas outras funcionalidades.

Para começar, devemos criar um projeto novo, baseado no template Worker Service do .NET, para isto, podemos ir via linha de comando

dotnet new worker -n WorkerSample

Ou diretamente pelo Visual Studio conforme a imagem abaixo demonstra.

Escolha o nome e pastas da aplicação:

Defina a tecnologia :

Feito isso, e com o projeto já criado, ele consiste num projeto com uma estrutura previamente montada para executar um método de forma constante.

A estrutura criada é bem simples:

Há 2 arquivos :

Program.cs — que como qualquer outra aplicação .NET faz a inicialização do projeto.

Onde ele adiciona o Worker como um serviço, e depois o executa pelo método “RunAsync”.

Worker.cs — Esta classe herda a estrutura de “BackgroundService” e que tem um método chamado “ExecuteAsync” que será executado assim que a mesma inicializar, e desta forma fará com seja executado qualquer código inserido ali dentro, em seu template, simplesmente está acionando um logger em um loop para informar que o Worker está em execução, mas podemos inserir tarefas ali dentro para consultar filas, bancos de dados, executar operações, etc.

Se executarmos o projeto em seu formato original, veremos que ele estará rodando infinitamente, com intervalos de 1000 milisegundos :

Pronto, então neste caso, estes workers uma vez instalados no servidor irão poder funcionar como um serviço de sistema.

Porém, caso seu servidor seja um servidor Windows, é necessário realizar uma implementação específica:

Primeiro, adicione um pacote nuget: Microsoft.Extensions.Hosting.WindowsServices

Depois, precisamos alterar o program.cs inserindo uma instrução para que ele possa se comportar como um Windows Service.

Além disso, vamos implementar no Worker.cs uma sobrecarga de dois métodos:

pois estes irão registrar em log o início e término do Worker.

Pronto, temos aí um Worker Básico em funcionamento, agora é só inserir funcionalidades de verdade dentro do método ExecuteAsync e deixá-lo rodando.

Na próxima postagem sobre Workers, irei falar sobre como montar um serviço que seja executado em uma hora específica do dia.

Gostou do artigo? clique no ícone👏e me siga para ver as próximas publicações !! Quer ver mais conteúdos, acesse minhas redes através do Linktree: https://linktree.com/nizzola

Referências:

Serviços de trabalho no .NET | Microsoft Docs

--

--

Marcio Nizzola
Marcio Nizzola

Written by Marcio Nizzola

Microsoft MVP | Software Architect na CI&T | Prof. da Etec Itu | Membro Fundador da Comunidade Itu Developers.

Responses (1)