Planificador de tareas en C# (.NET): Quartz.NET, Hangfire y Coravel

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Planificador de tareas en C# (.NET): Quartz.NET, Hangfire y Coravel



En las aplicaciones .NET modernas, a menudo es necesario ejecutar código no solo a petición del usuario, sino también según un horario: envío de correos electrónicos masivos, limpieza de bases de datos, generación de informes, sincronización con APIs externas. Para ello se utilizan planificadores de tareas (Job Schedulers). En este artículo, revisaremos tres herramientas populares para C# (.NET): Quartz.NET, Hangfire y Coravel, sus características, ejemplos de código y casos de uso.



¿Por qué necesitas un planificador de tareas en .NET?

Un planificador de tareas permite:

  • Ejecutar tareas en segundo plano en un momento específico (por ejemplo, todos los días a las 8:00).
  • Repetir tareas con un intervalo definido (cada 5 minutos).
  • Procesar colas de tareas sin bloquear el hilo principal de la aplicación.
  • Gestionar fácilmente las tareas (agregar, eliminar, pausar).
  • Garantizar la tolerancia a fallos (reintentos en caso de errores).


1. Quartz.NET — un planificador potente y flexible

Quartz.NET es un puerto del popular framework Java Quartz para .NET. Admite horarios complejos (expresiones cron), agrupación en clústeres y persistencia de tareas en la base de datos. Es adecuado para proyectos empresariales.



Instalación

dotnet add package Quartzdotnet add package Quartz.Extensions.Hosting


Ejemplo: tarea con horario cron

using Quartz;using Quartz.Impl;using System.Threading.Tasks;

public class EmailJob : IJob{ public async Task Execute(IJobExecutionContext context) { Console.WriteLine($"Enviando correo electrónico a las {DateTime.Now}"); // Lógica de envío de correo await Task.CompletedTask; }}

// Configuración en Program.csvar scheduler = await StdSchedulerFactory.GetDefaultScheduler();await scheduler.Start();

var job = JobBuilder.Create<EmailJob>() .WithIdentity("emailJob", "group1") .Build();

var trigger = TriggerBuilder.Create() .WithIdentity("emailTrigger", "group1") .WithCronSchedule("0 0 8 * * ?") // Todos los días a las 8:00 .Build();

await scheduler.ScheduleJob(job, trigger);


Características

  • Soporte de expresiones cron (horario flexible).
  • Agrupación en clústeres para sistemas distribuidos.
  • Persistencia (las tareas se guardan al reiniciar).
  • Alto rendimiento para miles de tareas.


2. Hangfire — simplicidad e interfaz de usuario integrada

Hangfire es un planificador con configuración mínima y un panel web integrado para monitorear tareas. Es ideal para proyectos pequeños y medianos donde la integración rápida es importante.



Instalación

dotnet add package Hangfiredotnet add package Hangfire.SqlServer (para almacenamiento en BD)


Ejemplo: tarea simple con retardo y repetición

using Hangfire;using Hangfire.SqlServer;

// Configuración en Program.csGlobalConfiguration.Configuration .UseSqlServerStorage("YourConnectionString");

app.UseHangfireServer();app.UseHangfireDashboard(); // Acceso a /hangfire

// Creación de tareaBackgroundJob.Schedule(() => Console.WriteLine("Tarea retrasada"), TimeSpan.FromMinutes(5));RecurringJob.AddOrUpdate("daily-report", () => Console.WriteLine("Informe diario"), Cron.Daily);


Características

  • Interfaz web integrada para monitoreo (sin dependencias adicionales).
  • Soporte de colas, reintentos y tareas retrasadas.
  • Fácil integración con ASP.NET Core.
  • Almacenamiento de tareas en SQL Server, Redis, PostgreSQL.


3. Coravel — ligero y moderno

Coravel es un planificador minimalista para .NET, inspirado en Laravel. No requiere dependencias externas

Recommendations