Programmering

Sådan arbejder du med Hangfire i C #

Planlægning af job i webapplikationer er en udfordring, og du kan vælge mellem mange rammer til opgaven. Et populært open source-bibliotek, Hangfire er en ramme, der kan bruges til planlægning af baggrundsjob i .Net.

Hvorfor skal jeg bruge Hangfire?

Der er mange jobplanlægningsrammer til rådighed i dag. Hvorfor skal du så bruge Hangfire i stedet for f.eks. Quartz.Net, som er en anden populær ramme, der længe har været i brug? Nå, en af ​​de største ulemper ved Quartz.Net er, at den har brug for en Windows-tjeneste. Tværtimod behøver du ikke en Windows-tjeneste for at bruge Hangfire i din applikation. Evnen til at køre uden en Windows-tjeneste gør Hangfire til et godt valg over Quartz.Net. Hangfire drager fordel af ASP.Net's anmodningsprocesser til behandling og udførelse af job.

Bemærk, at Hangfire ikke er begrænset til webapplikationer; du kan også bruge den i dine konsolapplikationer. Dokumentationen til Hangfire er meget detaljeret og velstruktureret, og den bedste funktion er dens indbyggede dashboard. Hangfire-instrumentbrættet viser detaljerede oplysninger om job, køer, status for job osv.

Kom godt i gang

Følg disse trin for at oprette et nyt projekt i Visual Studio, der udnytter Hangfire:

  1. Åbn Visual Studio 2015
  2. Klik på Filer> Ny> Projekt
  3. Vælg Visual C #> Web fra listen over projektskabeloner, der vises
  4. Vælg ASP.Net-webapplikation fra listen over skabeloner til webprojekter
  5. Gem projektet med et navn

Det næste trin er at installere og konfigurere Hangfire i din applikation; processen er ret ligetil. Du kan installere Hangfire via NuGet Package Manager i Visual Studio. Alternativt kan du også bruge Package Manager-konsollen til at installere Hangfire-biblioteket. Standardinstallationen af ​​Hangfire bruger SQL Server til lagring af planlægningsoplysninger. Derudover kan du installere Hangfire.Redis, hvis du bruger Redis i stedet for opbevaring.

Bemærk, at Hangfire gemmer dine job i et vedvarende lager - du skal konfigurere lageret, inden du begynder at bruge Hangfire. For at gøre dette skal du oprette en database og angive databasens legitimationsoplysninger i forbindelsesstrengen i konfigurationsfilen. Du behøver ikke oprette tabellerne i din database; Hangfire gør det automatisk for dig. Vi vil se, hvordan og hvornår det bliver gjort senere.

Nu hvor databasen er oprettet, og forbindelsesstrengoplysningerne er specificeret i programmets konfigurationsfil, er det næste trin at ændre Startup.cs-filen og give de nødvendige forbindelsesstrengoplysninger. Følgende kodeliste illustrerer, hvordan Startup.cs-filen ser ud, efter at konfigurationsoplysningerne er specificeret.

ved hjælp af Hangfire;

ved hjælp af Microsoft.Owin;

ved hjælp af Owin;

ved hjælp af System;

[forsamling: OwinStartupAttribute (type(HangFire.Startup))]

navneområde HangFire

{

offentlig delvis klasse opstart

    {

offentlig ugyldig konfiguration (IAppBuilder app)

        {

ConfigureAuth (app);

GlobalConfiguration.Configuration

.UseSqlServerStorage ("StandardConnection");

BackgroundJob.Enqueue (() => Console.WriteLine ("Kom godt i gang med HangFire!"));

app.UseHangfireDashboard ();

app.UseHangfireServer ();

        }

    }

}

Du er klar. Når du kører applikationen og suffikser URL'en med "/ hangfire", kan du se Hangfire-dashboardet. Når du udfører dette første gang, oprettes der en ny tabel i databasen. Tabellerne, der oprettes, inkluderer AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set og State. Oprettelse af en brand-og-glem-baggrund i Hangfire er ret enkel. Du kan oprette et baggrundsjob ved hjælp af Enqueue () metode til BaggrundJob klasse. Her er et eksempel:

BackgroundJob.Enqueue (() => Console.WriteLine ("Dette er et brand-og-glem-job, der kører i baggrunden."));

Et forsinket baggrundsjob er et, der venter (på forsinkelsesintervallet) og derefter udfører stort set på samme måde som et normalt brand-og-glem-baggrundsjob. Følgende kodestykke illustrerer, hvordan du kan oprette et forsinket baggrundsjob ved hjælp af Tidsplan() metode til BaggrundJob klasse.

BackgroundJob.Schedule (() => Console.WriteLine ("Dette baggrundsjob vil udføres efter en forsinkelse."), TimeSpan.FromMilliseconds (1000));

Hvis du skulle udføre job, der ville udføres efter et bestemt tidsinterval, skal du oprette tilbagevendende job i Hangfire. For at oprette et tilbagevendende job skal du udnytte Tilbagevendende job klasse. Bemærk, at du også kan specificere "cron" -udtryk, når du planlægger job i Hangfire. Følgende kodestykke illustrerer, hvordan du kan oprette et tilbagevendende job ved hjælp af Hangfire-biblioteket.

RecurringJob.AddOrUpdate (() => Console.WriteLine ("Dette job udføres en gang i hvert minut"), Cron.Minutely);

Se Hangfire Highlighter-vejledningen for at få flere oplysninger.