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:
- Åbn Visual Studio 2015
- Klik på Filer> Ny> Projekt
- Vælg Visual C #> Web fra listen over projektskabeloner, der vises
- Vælg ASP.Net-webapplikation fra listen over skabeloner til webprojekter
- 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.