Introdução
No contexto da programação, um job é simplesmente uma tarefa que precisa ser executada. Um boco de trabalho, com início, meio e fim. A palavra vem do inglês mesmo: job = trabalho, tarefa.
Job vs. Código Comum
A diferença fundamental é que código comum executa junto com quem pediu. Um job executa separado, no seu próprio tempo:
Código comum:
Cliente → Requisição → Servidor processa tudo → Resposta → Cliente
Com jobs:
Cliente → Requisição → Servidor responde imediatamente
↓
Job 1: envia email (depois)
Job 2: atualiza estoque (depois)
Job 3: gera nota fiscal (depois)
Ideia Central
Pense no seu computador. Quando você abre o Outlook às 8h da manhã e ele automaticamente verifica novos e-mails, sincroniza o calendário e baixa anexos — cada uma dessas operações é um job. Alguém programou: "toda vez que o programa abrir, execute essas tarefas".
Em software, um job é qualquer operação que você quer executar de forma controlada, separada do fluxo principal da aplicação.
Jobs no dia a dia de sum sistema
Pense em um e-commerce. Quando um cliente finaliza uma compra, várias coisas precisam acontecer:
- Enviar e-mail de confirmação
- Atualizar o estoque
- Notificar o vendedor
- Gerar nota fiscal
- Registrar no sistema financeiro
Você poderia fazer tudo isso dentro da requisição HTTP — o cliente clica em "Comprar" e fica esperando enquanto o servidor faz tudo. Mas isso é lento e frágil. Se qualquer etapa falhar, o cliente vê um erro.
A solução é transformar cada uma dessas tarefas em um job: o servidor responde imediatamente "compra realizada!" e delega o restante para ser executado em background, de forma assíncrona.
Anatomia de um Job
Todo job tem três características:
O que fazer — o código que será executado, normalmente um método. Ex: public void EnviarEmailConfirmacao(int pedidoId)
Quando fazer — agora, daqui a 30 minutos, todo dia às 9h:
O que fazer se falhar — tentar de novo? Quantas vezes? Notificar alguém?
Por que persistir Jobs?
Se você simplesmente usar Task.Run(() => EnviarEmail()), o job existe só na memória. Se o servidor reiniciar — por um deploy, uma falha, qualquer motivo — o job desaparece e o e-mail nunca é enviado.
Por isso sistemas de jobs sérios gravam a tarefa em um banco de dados antes de executar. Assim, mesmo que o servidor caia no meio da execução, o job pode ser retomado depois.
É exatamente isso que o Hangfire faz, e agora que você entende o conceito de job, o Hangfire vai fazer muito mais sentido.
Top comments (0)