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/MVC | Worker Service | |
|---|---|---|
| O que inicia o trabalho | Uma requisição HTTP chega | O próprio processo, em intervalos ou continuamente |
| Tempo de vida | Um request/response, muito curto | O processo inteiro roda por horas, dias, meses |
| Exemplos | Endpoint de checkout, tela de cadastro | Processar 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
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.
Fig. 1 — Um Worker Service é, na essência, um laço de longa duração hospedado pelo runtime do .NET.
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.