So arbeiten Sie mit Hangfire in C #

Das Planen von Jobs in Webanwendungen ist eine Herausforderung, und Sie können aus vielen Frameworks für die Aufgabe auswählen. Hangfire ist eine beliebte Open-Source-Bibliothek und ein Framework, mit dem Hintergrundjobs in .Net geplant werden können.

Warum sollte ich Hangfire verwenden?

Es gibt heute viele Frameworks für die Jobplanung. Warum sollten Sie dann Hangfire anstelle von beispielsweise Quartz.Net verwenden, einem weiteren beliebten Framework, das seit langem verwendet wird? Nun, einer der Hauptnachteile von Quartz.Net ist, dass es einen Windows-Dienst benötigt. Im Gegenteil, Sie benötigen keinen Windows-Dienst, um Hangfire in Ihrer Anwendung zu verwenden. Die Möglichkeit, ohne Windows-Dienst ausgeführt zu werden, macht Hangfire zu einer guten Wahl gegenüber Quartz.Net. Hangfire nutzt die Anforderungsverarbeitungspipeline von ASP.Net für die Verarbeitung und Ausführung von Jobs.

Beachten Sie, dass Hangfire nicht auf Webanwendungen beschränkt ist. Sie können es auch in Ihren Konsolenanwendungen verwenden. Die Dokumentation für Hangfire ist sehr detailliert und gut strukturiert. Die beste Funktion ist das integrierte Dashboard. Das Hangfire-Dashboard zeigt detaillierte Informationen zu Jobs, Warteschlangen, Status von Jobs usw. an.

Anfangen

Gehen Sie folgendermaßen vor, um in Visual Studio ein neues Projekt zu erstellen, das Hangfire nutzt:

  1. Öffnen Sie Visual Studio 2015
  2. Klicken Sie auf Datei> Neu> Projekt
  3. Wählen Sie Visual C #> Web aus der Liste der angezeigten Projektvorlagen
  4. Wählen Sie aus der Liste der Webprojektvorlagen die Webanwendung ASP.Net aus
  5. Speichern Sie das Projekt unter einem Namen

Der nächste Schritt ist die Installation und Konfiguration von Hangfire in Ihrer Anwendung. Der Prozess ist recht einfach. Sie können Hangfire über den NuGet Package Manager in Visual Studio installieren. Alternativ können Sie die Hangfire-Bibliothek auch über die Package Manager-Konsole installieren. Die Standardinstallation von Hangfire verwendet SQL Server zum Speichern von Planungsinformationen. Darüber hinaus können Sie Hangfire.Redis installieren, wenn Sie stattdessen Redis als Speicher verwenden.

Beachten Sie, dass Hangfire Ihre Jobs in einem dauerhaften Speicher speichert. Sie müssen den Speicher konfigurieren, bevor Sie Hangfire verwenden können. Erstellen Sie dazu eine Datenbank und geben Sie die Datenbankanmeldeinformationen in der Verbindungszeichenfolge in der Konfigurationsdatei an. Sie müssen die Tabellen nicht in Ihrer Datenbank erstellen. Hangfire erledigt das automatisch für Sie. Wir werden später sehen, wie und wann es gemacht wird.

Nachdem die Datenbank erstellt und die Verbindungszeichenfolgeninformationen in der Konfigurationsdatei der Anwendung angegeben wurden, besteht der nächste Schritt darin, die Datei Startup.cs zu ändern und die erforderlichen Verbindungszeichenfolgeninformationen bereitzustellen. Die folgende Codeliste zeigt, wie die Datei Startup.cs aussieht, nachdem die Konfigurationsdetails angegeben wurden.

using Hangfire;

using Microsoft.Owin;

using Owin;

using System;

[assembly: OwinStartupAttribute(eine Art von(HangFire.Startup))]

namespace HangFire

{

    public partial class Startup

    {

        public void Configuration(IAppBuilder app)

        {

            ConfigureAuth(app);

            GlobalConfiguration.Configuration

                .UseSqlServerStorage("DefaultConnection");

            BackgroundJob.Enqueue(() => Console.WriteLine("Getting Started with HangFire!"));

            app.UseHangfireDashboard();

            app.UseHangfireServer();

        }

    }

}

Du bist fertig. Wenn Sie die Anwendung ausführen und die URL mit "/ hangfire" versehen, wird das Hangfire-Dashboard angezeigt. Wenn Sie dies zum ersten Mal ausführen, wird eine neue Tabelle in der Datenbank erstellt. Zu den erstellten Tabellen gehören AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, Liste, Schema, Server, Set und Status. Das Erstellen eines Fire-and-Forget-Hintergrunds in Hangfire ist ganz einfach. Sie können einen Hintergrundjob mit der Enqueue()Methode der BackgroundJobKlasse erstellen . Hier ist ein Beispiel:

BackgroundJob.Enqueue(() => Console.WriteLine("This is a fire-and-forget job that would run in the background."));

Ein verzögerter Hintergrundjob wartet (auf das Verzögerungsintervall) und wird dann ähnlich wie ein normaler Hintergrundjob zum Feuern und Vergessen ausgeführt. Das folgende Codeausschnitt zeigt, wie Sie mit der Schedule()Methode der BackgroundJobKlasse einen verzögerten Hintergrundjob erstellen können .

BackgroundJob.Schedule(() => Console.WriteLine("This background job would execute after a delay."), TimeSpan.FromMilliseconds(1000));

Wenn Sie Jobs ausführen möchten, die nach einem bestimmten Zeitintervall ausgeführt werden, müssen Sie in Hangfire wiederkehrende Jobs erstellen. Um einen wiederkehrenden Job zu erstellen, müssten Sie die RecurringJobKlasse nutzen. Beachten Sie, dass Sie beim Planen von Jobs in Hangfire auch Cron-Ausdrücke angeben können. Das folgende Codeausschnitt zeigt, wie Sie mithilfe der Hangfire-Bibliothek einen wiederkehrenden Job erstellen können.

RecurringJob.AddOrUpdate(() => Console.WriteLine("This job will execute once in every minute"), Cron.Minutely);

Weitere Informationen finden Sie im Hangfire Highlighter-Tutorial.