Programmering

Hvordan jobbe med Hangfire i C #

Å 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:

  1. Åpne Visual Studio 2015
  2. Klikk på Fil> Ny> Prosjekt
  3. Velg Visual C #> Web fra listen over prosjektmalene som vises
  4. Velg ASP.Net-webapplikasjon fra listen over webprosjektmaler
  5. 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.

$config[zx-auto] not found$config[zx-overlay] not found