Aufgabenplaner in C# (.NET): Quartz.NET, Hangfire, Coravel

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Aufgabenplaner in C# (.NET): Übersicht und Beispiele



In der modernen Entwicklung mit C# (.NET) besteht häufig die Notwendigkeit, Code nach einem Zeitplan auszuführen: E-Mail-Newsletter versenden, Cache aktualisieren, Logs archivieren oder ETL-Prozesse starten. Dafür gibt es spezialisierte Bibliotheken – Aufgabenplaner (Job Scheduler). In diesem Artikel betrachten wir drei beliebte Lösungen: Quartz.NET, Hangfire und Coravel, und geben Beispiele für deren Verwendung.



1. Quartz.NET – leistungsstarker und flexibler Planer



Quartz.NET ist ein Port des beliebten Java-Frameworks Quartz. Es unterstützt komplexe Zeitpläne mit Cron-Ausdrücken, Persistenz von Aufgaben in der Datenbank, Clustering und Trigger.



Installation

dotnet add package Quartz


Beispiel: Einfache Aufgabe mit Cron-Zeitplan

using Quartz;using Quartz.Impl;

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

// Planer konfigurierenISchedulerFactory schedulerFactory = new StdSchedulerFactory();IScheduler scheduler = await schedulerFactory.GetScheduler();

// Aufgabe definierenIJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity("helloJob", "group1") .Build();

// Trigger: alle 10 SekundenITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithCronSchedule("0/10 * * * * ?") // alle 10 Sekunden .ForJob(job) .Build();

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


Besonderheiten:

  • Unterstützung von Cron-Ausdrücken (z.B. 0 0 12 * * ? – jeden Tag um 12:00 Uhr).
  • Speicherung von Aufgaben in ADO.NET (SQL Server, PostgreSQL, MySQL).
  • Möglichkeit der dynamischen Erstellung/Löschung von Aufgaben.
  • Clustering für Ausfallsicherheit.


2. Hangfire – Einfachheit und integriertes Dashboard



Hangfire ist eine Bibliothek zur Ausführung von Hintergrundaufgaben mit minimaler Konfiguration. Sie bietet ein integriertes Web-Dashboard zur Überwachung, Wiederholungsversuche bei Fehlern und Integration mit ASP.NET Core.



Installation

dotnet add package Hangfiredotnet add package Hangfire.SqlServer # für Speicherung in SQL Server


Beispiel: Verzögerte und wiederkehrende Aufgabe

using Hangfire;

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

public void Configure(IApplicationBuilder app){ app.UseHangfireDashboard(); // /hangfire // Wiederkehrende Aufgabe: alle 5 Minuten RecurringJob.AddOrUpdate( "cleanup-cache", () => Console.WriteLine("Cache-Bereinigung..."), "*/5 * * * *"); // Verzögerte Aufgabe (in 1 Stunde) BackgroundJob.Schedule( () => SendEmail("user@example.com"), TimeSpan.FromHours(1));}

public void SendEmail(string email){ Console.WriteLine($"Sende E-Mail an {email}");}


Vorteile:

  • Integriertes Dashboard (/hangfire) zur Ansicht des Aufgabenstatus.
  • Automatische Wiederholungen bei Fehlern.
  • Unterstützung von Warteschlangen (standardmäßig Redis oder SQL Server).
  • Einfache Integration mit ASP.NET Core über DI.


3. Coravel – leichter Planer für .NET Core



Coravel ist eine minimalistische Bibliothek, die keine externen Abhängigkeiten benötigt (außer .NET selbst). Sie ist ideal für kleine Projekte, bei denen keine Persistenz erforderlich ist.



Installation

dotnet add                    

Empfehlungen