Å planlegge jobber i webapplikasjoner er en utfordring, og du kan velge mellom mange rammer for oppgaven. Et populært open source-bibliotek, Hangfire er et rammeverk som kan brukes til å planlegge bakgrunnsjobber i .Net.
Hvorfor skal jeg bruke Hangfire?
Det er mange rammer for jobbplanlegging tilgjengelig i dag. Hvorfor bør du da bruke Hangfire i stedet for for eksempel Quartz.Net, som er et annet populært rammeverk som lenge har vært i bruk? Vel, en av de største ulempene med Quartz.Net er at den trenger en Windows-tjeneste. Tvert imot trenger du ikke en Windows-tjeneste for å bruke Hangfire i applikasjonen din. Evnen til å kjøre uten Windows-tjeneste gjør Hangfire til et godt valg over Quartz.Net. Hangfire benytter seg av forespørselsbehandlingsrørledningen til ASP.Net for behandling og utføring av jobber.
Merk at Hangfire ikke er begrenset til webapplikasjoner; du kan også bruke den i konsollapplikasjonene dine. Dokumentasjonen for Hangfire er veldig detaljert og godt strukturert, og den beste funksjonen er det innebygde dashbordet. Hangfire-dashbordet viser detaljert informasjon om jobber, køer, status for jobber og så videre.
Starter
Følg disse trinnene for å lage et nytt prosjekt i Visual Studio som utnytter Hangfire:
- Åpne Visual Studio 2015
- Klikk på Fil> Ny> Prosjekt
- Velg Visual C #> Web fra listen over prosjektmalene som vises
- Velg ASP.Net-webapplikasjon fra listen over webprosjektmaler
- Lagre prosjektet med et navn
Det neste trinnet er å installere og konfigurere Hangfire i applikasjonen din; prosessen er ganske grei. Du kan installere Hangfire via NuGet Package Manager i Visual Studio. Alternativt kan du også bruke Package Manager-konsollen til å installere Hangfire-biblioteket. Standardinstallasjonen av Hangfire bruker SQL Server for å lagre planleggingsinformasjon. I tillegg kan du installere Hangfire.Redis hvis du bruker Redis i stedet for lagring.
Merk at Hangfire lagrer jobbene dine i en vedvarende lagring - du må konfigurere lagringen før du begynner å bruke Hangfire. For å gjøre dette, opprett en database og spesifiser databaselegitimasjonen i tilkoblingsstrengen i konfigurasjonsfilen. Du trenger ikke lage tabellene i databasen din; Hangfire vil gjøre det for deg automatisk. Vi får se hvordan og når det blir gjort senere.
Nå som databasen er opprettet og tilkoblingsstrenginformasjonen er spesifisert i konfigurasjonsfilen til applikasjonen, er neste trinn å endre Startup.cs-filen og gi den nødvendige tilkoblingsstrenginformasjonen. Følgende kodeliste illustrerer hvordan Startup.cs-filen ser ut etter at konfigurasjonsdetaljene er spesifisert.
bruker Hangfire;
bruker Microsoft.
Owin;
bruker Owin;
bruker System;
[forsamling: OwinStartupAttribute (
type av(HangFire.Startup))]
navnerom HangFire
{
offentlig delklasse Oppstart
{
public void Configuration (IAppBuilder app)
{
ConfigureAuth (app);
GlobalConfiguration.Configuration
.UseSqlServerStorage ("StandardConnection");
BackgroundJob.Enqueue (() => Console.WriteLine ("Komme i gang med HangFire!"));
app.UseHangfireDashboard ();
app.UseHangfireServer ();
}
}
}
Du er klar. Når du kjører applikasjonen og suffikser URL-en med "/ hangfire", kan du se Hangfire-dashbordet. Når du utfører dette aller første gang, opprettes en ny tabell i databasen. Tabellene som opprettes inkluderer AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set, and State. Å lage en fyr og glem-bakgrunn i Hangfire er ganske enkelt. Du kan opprette en bakgrunnsjobb ved hjelp av Enqueue ()
metoden for BakgrunnJob
klasse. Her er et eksempel:
BackgroundJob.Enqueue (() => Console.WriteLine ("Dette er en brann-og-glem-jobb som vil kjøre i bakgrunnen."));
En forsinket bakgrunnsjobb er en som venter (på forsinkelsesintervallet), og deretter utfører omtrent på samme måte som en vanlig brann-og-glem-bakgrunnsjobb. Følgende kodebit illustrerer hvordan du kan opprette en forsinket bakgrunnsjobb ved hjelp av Rute()
metoden for BakgrunnJob
klasse.
BackgroundJob.Schedule (() => Console.WriteLine ("Denne bakgrunnsjobben vil utføres etter en forsinkelse."), TimeSpan.FromMilliseconds (1000));
Hvis du skulle utføre jobber som vil utføres etter et bestemt tidsintervall, må du opprette tilbakevendende jobber i Hangfire. For å opprette en gjentakende jobb, må du utnytte Gjentakende jobb
klasse. Merk at du også kan spesifisere "cron" -uttrykk når du planlegger jobber i Hangfire. Følgende kodebit illustrerer hvordan du kan opprette en tilbakevendende jobb ved hjelp av Hangfire-biblioteket.
RecurringJob.AddOrUpdate (() => Console.WriteLine ("Denne jobben vil utføres en gang i hvert minutt"), Cron.Minutely);
Ta en titt på Hangfire Highlighter-opplæringen for mer informasjon.