Planificateur de tâches en C# (.NET) : Quartz.NET, Hangfire, Coravel

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Planificateur de tâches en C# (.NET) : aperçu et exemples



Dans le développement moderne en C# (.NET), il est souvent nécessaire d'exécuter du code selon un planning : envoyer des newsletters par email, mettre à jour le cache, archiver des logs ou lancer des processus ETL. Pour cela, il existe des bibliothèques spécialisées — les planificateurs de tâches (Job Schedulers). Dans cet article, nous examinerons trois solutions populaires : Quartz.NET, Hangfire et Coravel, et nous fournirons des exemples de leur utilisation.



1. Quartz.NET — un planificateur puissant et flexible



Quartz.NET est un portage du framework Java populaire Quartz. Il prend en charge les plannings complexes avec des expressions cron, la persistance des tâches en base de données, le clustering et les déclencheurs.



Installation

dotnet add package Quartz


Exemple : une tâche simple avec un planning cron

using Quartz;using Quartz.Impl;

public class HelloJob : IJob{ public async Task Execute(IJobExecutionContext context) { Console.WriteLine($"Bonjour ! Heure : {DateTime.Now}"); }}

// Configuration du planificateurISchedulerFactory schedulerFactory = new StdSchedulerFactory();IScheduler scheduler = await schedulerFactory.GetScheduler();

// Définition de la tâcheIJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("helloJob", "group1") .Build();

// Déclencheur : toutes les 10 secondesITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithCronSchedule("0/10 * * * * ?") // toutes les 10 secondes .ForJob(job) .Build();

await scheduler.ScheduleJob(job, trigger);await scheduler.Start();


Caractéristiques :

  • Prise en charge des expressions cron (par exemple, 0 0 12 * * ? — tous les jours à midi).
  • Stockage des tâches dans ADO.NET (SQL Server, PostgreSQL, MySQL).
  • Possibilité de créer/supprimer dynamiquement des tâches.
  • Clustering pour la tolérance aux pannes.


2. Hangfire — simplicité et tableau de bord intégré



Hangfire est une bibliothèque pour exécuter des tâches d'arrière-plan avec une configuration minimale. Elle fournit un tableau de bord web intégré pour la surveillance, des tentatives automatiques en cas d'erreur et une intégration avec ASP.NET Core.



Installation

dotnet add package Hangfiredotnet add package Hangfire.SqlServer # pour le stockage dans SQL Server


Exemple : tâche différée et récurrente

using Hangfire;

// Configuration dans Startup.cspublic void ConfigureServices(IServiceCollection services){ services.AddHangfire(config => config.UseSqlServerStorage("connection_string")); services.AddHangfireServer();}

public void Configure(IApplicationBuilder app){ app.UseHangfireDashboard(); // /hangfire // Tâche récurrente : toutes les 5 minutes RecurringJob.AddOrUpdate( "cleanup-cache", () => Console.WriteLine("Nettoyage du cache..."), "*/5 * * * *"); // Tâche différée (dans 1 heure) BackgroundJob.Schedule( () => SendEmail("user@example.com"), TimeSpan.FromHours(1));}

public void SendEmail(string email){ Console.WriteLine($"Envoi d'email à {email}");}


Avantages :

  • Tableau de bord intégré (/hangfire) pour visualiser le statut des tâches.
  • Répétitions automatiques en cas d'échec.
  • Prise en charge des files d'attente (par défaut — Redis ou SQL Server).
  • Intégration simple avec ASP.NET Core via l'injection de dépendances.


3. Coravel — un planificateur léger pour .NET Core



Coravel est une bibliothèque minimaliste qui ne nécessite pas de dépendances externes (en dehors de .NET lui-même). Elle est idéale pour les petits projets où la persistance n'est pas nécessaire.



Installation

dotnet add                    

Recommendations