Programiranje

Kako delati z Hangfire v C #

Razporejanje opravil v spletnih aplikacijah je izziv in za nalogo lahko izbirate med številnimi okviri. Hangfire, priljubljena odprtokodna knjižnica, je okvir, ki ga lahko uporabimo za razporejanje opravil v ozadju v .Net.

Zakaj naj uporabljam Hangfire?

Danes je na voljo veliko okvirov za razporejanje delovnih mest. Zakaj bi potem uporabljali Hangfire namesto, na primer Quartz.Net, ki je še en priljubljen okvir, ki je že dolgo v uporabi? No, ena glavnih pomanjkljivosti Quartz.Net je ta, da potrebuje storitev Windows. Nasprotno, za uporabo aplikacije Hangfire v aplikaciji ne potrebujete storitve Windows. Zaradi zmožnosti delovanja brez storitve Windows je Hangfire dobra izbira za Quartz.Net. Hangfire izkorišča cevovod za obdelavo zahtev ASP.Net za obdelavo in izvrševanje opravil.

Upoštevajte, da Hangfire ni omejen na spletne aplikacije; lahko ga uporabite tudi v aplikacijah konzole. Dokumentacija za Hangfire je zelo podrobna in dobro strukturirana, najboljša lastnost pa je vgrajena armaturna plošča. Na nadzorni plošči Hangfire so prikazane podrobne informacije o delovnih mestih, čakalnih vrstah, stanju opravil itd.

Kako začeti

Če želite v Visual Studio ustvariti nov projekt, ki uporablja Hangfire, sledite tem korakom:

  1. Odprite Visual Studio 2015
  2. Kliknite Datoteka> Novo> Projekt
  3. Na seznamu prikazanih predlog predlog izberite Visual C #> Web
  4. Na seznamu predlog spletnega projekta izberite Spletno aplikacijo ASP.Net
  5. Shranite projekt z imenom

Naslednji korak je namestitev in konfiguriranje aplikacije Hangfire v vaši aplikaciji; postopek je povsem enostaven. Hangfire lahko namestite prek upravitelja paketov NuGet v Visual Studio. Za namestitev knjižnice Hangfire lahko uporabite tudi konzolo Package Manager Console. Privzeta namestitev Hangfire uporablja SQL Server za shranjevanje informacij o načrtovanju. Poleg tega lahko namestite Hangfire.Redis, če namesto njega uporabljate Redis za shranjevanje.

Upoštevajte, da Hangfire shranjuje vaša opravila v trajni pomnilnik - shrambo morate konfigurirati, preden začnete uporabljati Hangfire. Če želite to narediti, ustvarite bazo podatkov in v nizu povezave v konfiguracijski datoteki podajte poverilnice baze podatkov. Tabel vam ni treba ustvariti v bazi podatkov; Hangfire bo to naredil samodejno za vas. Kako in kdaj bo to izvedeno, bomo videli kasneje.

Zdaj, ko je bila baza podatkov ustvarjena in so informacije o nizu povezave navedene v konfiguracijski datoteki aplikacije, je naslednji korak spremeniti datoteko Startup.cs in zagotoviti potrebne informacije o nizu povezave. Naslednji seznam kod ponazarja, kako izgleda datoteka Startup.cs po določenih podrobnostih konfiguracije.

z uporabo ognja Hangfire;

z uporabo Microsofta.Owin;

z uporabo Owina;

z uporabo sistema;

[montaža: OwinStartupAttribute (tip(HangFire.Startup))]

imenski prostor HangFire

{

javni delni razred Zagon

    {

javna neveljavna konfiguracija (aplikacija IAppBuilder)

        {

ConfigureAuth (aplikacija);

GlobalConfiguration.Configuration

.UseSqlServerStorage ("DefaultConnection");

BackgroundJob.Enqueue (() => Console.WriteLine ("Kako začeti z HangFire!"));

app.UseHangfireDashboard ();

app.UseHangfireServer ();

        }

    }

}

Pripravljeni ste. Ko zaženete aplikacijo in URL-ju dodate pripono »/ hangfire«, lahko vidite nadzorno ploščo Hangfire. Ko to izvedete prvič, se v zbirki podatkov ustvari nova tabela. Tabele, ki so ustvarjene, vključujejo AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set in State. Ustvarjanje ozadja »pozabi in pozabi« v Hangfire je povsem preprosto. Opravilo v ozadju lahko ustvarite z V čakalno vrsto () metoda BackgroundJob razred. Tu je primer:

BackgroundJob.Enqueue (() => Console.WriteLine ("To je opravilo" sproži in pozabi ", ki bi se izvajalo v ozadju."));

Zakasnjeno opravilo v ozadju je tisto, ki čaka (na interval zakasnitve), nato pa se izvede približno enako kot običajno opravilo v ozadju »pozabi in pozabi«. Naslednji delček kode prikazuje, kako lahko ustvarite zakasnjeno opravilo v ozadju z uporabo Urnik () metoda BackgroundJob razred.

BackgroundJob.Schedule (() => Console.WriteLine ("To opravilo v ozadju bi se izvedlo po zamudi."), TimeSpan.FromMilliseconds (1000));

Če bi morali izvajati opravila, ki bi se izvajala po določenem časovnem intervalu, bi morali v Hangfire ustvariti ponavljajoča se opravila. Če želite ustvariti ponavljajoče se opravilo, bi morali izkoristiti RecurringJob razred. Upoštevajte, da lahko tudi pri razporejanju opravil v programu Hangfire podate izraze »cron«. Naslednji delček kode prikazuje, kako lahko s knjižnico Hangfire ustvarite ponavljajoče se opravilo.

RecurringJob.AddOrUpdate (() => Console.WriteLine ("To opravilo se bo izvajalo enkrat na minuto"), Cron.Minutely);

Za več informacij si oglejte vadnico Hangfire Highlighter.

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