Módulo 5 · Worker Service — Capítulo 01

O que é um Worker Service e quando usar

Quando uma aplicação não deveria esperar um clique nem uma requisição HTTP — código que roda continuamente em segundo plano.

1. O terceiro tipo de aplicação C#

Os módulos anteriores cobriram dois modelos de execução: MVC/API, que reagem a uma requisição HTTP, e (no próximo módulo) Desktop, que reage a interação do usuário. Existe um terceiro padrão, igualmente comum em sistemas reais: processos que rodam continuamente, sem interface e sem esperar ninguém — processando filas, rodando tarefas agendadas, sincronizando dados. É para isso que existe o Worker Service no .NET.

API/MVCWorker Service
O que inicia o trabalhoUma requisição HTTP chegaO próprio processo, em intervalos ou continuamente
Tempo de vidaUm request/response, muito curtoO processo inteiro roda por horas, dias, meses
ExemplosEndpoint de checkout, tela de cadastroProcessar pedidos pendentes, enviar e-mails em fila, sincronizar estoque com um sistema externo

2. Casos de uso típicos, conectados ao que você já construiu

  • Processamento assíncrono de pedidos: um worker que a cada minuto verifica pedidos com status "Pendente" (Módulo 2) e os processa, sem depender de uma requisição HTTP esperando.
  • Envio de notificações: consumir uma fila de e-mails/SMS gerada pelos eventos do Módulo 1 (capítulo 11), sem bloquear a resposta da API.
  • Sincronização periódica: rodar uma procedure de relatório agregado (Módulo 2, capítulo 7) toda madrugada e salvar o resultado numa tabela de cache.
  • Limpeza e manutenção: remover registros de auditoria antigos, arquivar pedidos concluídos há mais de um ano.

3. Criando o projeto

bash terminal
dotnet new worker -o ProcessadorDePedidos
cd ProcessadorDePedidos
dotnet run

O template worker já vem com toda a estrutura necessária: um Program.cs configurando o host, e uma classe Worker — aprofundada no próximo capítulo — que é onde a lógica de fundo realmente roda.

Processo do Worker Service (roda continuamente) while (!parado) {'{'} ExecutarTarefa(); await Task.Delay(intervalo); {'}'} sem requisição HTTP, sem clique de usuário — só o relógio e a lógica

Fig. 1 — Um Worker Service é, na essência, um laço de longa duração hospedado pelo runtime do .NET.

Comparando com o que você já conhece

Se você já configurou um cron job ou um processo Node.js rodando com setInterval continuamente (um script de fila, por exemplo), o conceito já é familiar. Worker Service formaliza esse padrão como parte do próprio .NET, com integração nativa a Dependency Injection, configuração e logging — as mesmas ferramentas que você já usou nos Módulos 3 e 4.

4. Onde isso te leva

Com o panorama estabelecido, o próximo capítulo aprofunda a peça central: a interface IHostedService e a classe base BackgroundService que a maioria dos workers reais herda.

📌 Resumo do capítulo

  • Worker Service é o terceiro modelo de aplicação C#, ao lado de MVC/API e Desktop — processos de longa duração, sem interface, iniciados pelo próprio relógio/lógica.
  • Casos de uso típicos: processamento assíncrono de pedidos, envio de notificações, sincronização periódica, limpeza de dados.
  • dotnet new worker já traz a estrutura básica pronta.

✏️ Praticando

  1. Crie um projeto Worker Service vazio e rode-o, observando a saída padrão no console.
  2. Liste três tarefas do seu trabalho atual (ou de um projeto pessoal) que fariam mais sentido como Worker Service do que como endpoint de API.