Programavimas

Kaip dirbti su „Hangfire“ C #

Darbų suplanavimas žiniatinklio programose yra iššūkis, ir jūs galite pasirinkti iš daugelio užduoties rėmelių. Populiari atvirojo kodo biblioteka „Hangfire“ yra viena sistema, kurią galima naudoti planuojant foninius darbus .Net.

Kodėl turėčiau naudoti „Hangfire“?

Šiandien yra daugybė darbo planavimo sistemų. Kodėl tuomet turėtumėte naudoti „Hangfire“, o ne, tarkime, „Quartz.Net“, kuris yra dar viena populiari sistema, kuri jau seniai naudojama? Na, vienas iš pagrindinių „Quartz.Net“ trūkumų yra tas, kad jam reikia „Windows“ paslaugos. Priešingai, norint naudoti „Hangfire“ jūsų programoje, nereikia „Windows“ paslaugos. Dėl galimybės veikti be „Windows“ paslaugos „Hangfire“ yra geras pasirinkimas prieš „Quartz.Net“. „Hangfire“ naudojasi ASP.Net užklausų apdorojimo vamzdynais, kad apdorotų ir vykdytų užduotis.

Atkreipkite dėmesį, kad „Hangfire“ nėra tik žiniatinklio programos; taip pat galite jį naudoti savo „Console“ programose. „Hangfire“ dokumentacija yra labai išsami ir gerai sukonstruota, o geriausia funkcija yra jos įmontuota prietaisų skydelis. „Hangfire“ informacijos suvestinėje pateikiama išsami informacija apie darbus, eiles, darbų būseną ir pan.

Darbo pradžia

Norėdami sukurti naują „Visual Studio“ projektą, kuriame naudojami „Hangfire“, atlikite šiuos veiksmus:

  1. Atidarykite „Visual Studio 2015“
  2. Spustelėkite Failas> Naujas> Projektas
  3. Rodomo projekto šablonų sąraše pasirinkite „Visual C #“> Web
  4. Žiniatinklio projekto šablonų sąraše pasirinkite ASP.Net žiniatinklio programą
  5. Išsaugokite projektą pavadinimu

Kitas žingsnis yra „Hangfire“ diegimas ir konfigūravimas jūsų programoje; procesas yra gana paprastas. „Hangfire“ galite įdiegti naudodami „NuGet“ paketų tvarkyklę „Visual Studio“. Arba taip pat galite naudoti „Package Manager Console“, kad įdiegtumėte „Hangfire“ biblioteką. Numatytasis „Hangfire“ diegimas naudoja SQL serverį planavimo informacijai saugoti. Be to, galite įdiegti „Hangfire.Redis“, jei vietoj jo naudojate „Redis“.

Atminkite, kad „Hangfire“ saugo jūsų darbus nuolatinėje saugykloje - prieš pradėdami naudoti „Hangfire“, turite sukonfigūruoti saugyklą. Norėdami tai padaryti, sukurkite duomenų bazę ir nurodykite duomenų bazės kredencialus prisijungimo eilutėje konfigūracijos faile. Jums nereikia kurti lentelių savo duomenų bazėje; „Hangfire“ tai padarys už jus automatiškai. Kaip ir kada tai bus padaryta, pamatysime vėliau.

Dabar, kai duomenų bazė yra sukurta ir ryšio eilutės informacija nurodyta programos konfigūracijos faile, kitas žingsnis yra modifikuoti failą „Startup.cs“ ir pateikti reikiamą informaciją apie ryšio eilutę. Šiame kodų sąraše pavaizduota, kaip „Startup.cs“ failas atrodo po to, kai nurodyta išsami konfigūracijos informacija.

naudojant „Hangfire“;

naudojant „Microsoft“.Owin;

naudojant Owin;

naudojant sistemą;

[surinkimas: OwinStartupAttribute (tipas(„HangFire.Startup“)]]

vardų sritis „HangFire“

{

viešoji dalinė klasė „Startup“

    {

vieša niekinė konfigūracija („IAppBuilder“ programa)

        {

„ConfigureAuth“ (programa);

„GlobalConfiguration“. Konfigūracija

.UseSqlServerStorage ("DefaultConnection");

BackgroundJob.Enqueue (() => Console.WriteLine ("Darbo su HangFire pradžia!"));

app.UseHangfireDashboard ();

app.UseHangfireServer ();

        }

    }

}

Viskas paruošta. Paleidus programą ir pridedant URL prie „/ hangfire“, galite pamatyti „Hangfire“ informacijos suvestinę. Kai tai įvykdote pirmą kartą, duomenų bazėje sukuriama nauja lentelė. Sukurtos lentelės apima „AggregatedCounter“, „Counter“, „Hash“, „Job“, „JobParameter“, „JobQueue“, „List“, „Schema“, „Server“, „Set“ ir „State“. Sukurti ugnį ir pamiršti foną „Hangfire“ yra gana paprasta. Galite sukurti foninį darbą naudodami Enqueue () metodas BackgroundJob klasė. Štai pavyzdys:

„BackgroundJob.Enqueue“ (() => Console.WriteLine („Tai užduoties ir pamiršimo darbas, kuris vykdomas fone.“));

Uždelstas foninis darbas yra tas, kuris laukia (uždelsimo intervalui), tada jį atlieka panašiai kaip ir įprastą foninį užduotį, kurią užmiršk. Šis kodo fragmentas parodo, kaip galite sukurti uždelstą fono darbą naudodami Tvarkaraštis () metodas BackgroundJob klasė.

BackgroundJob.Schedule (() => Console.WriteLine ("Ši foninė užduotis būtų vykdoma po uždelsimo."), TimeSpan.FromMilliseconds (1000));

Jei atliktumėte darbus, kurie būtų vykdomi po tam tikro laiko intervalo, „Hangfire“ turėtumėte sukurti pasikartojančias darbo vietas. Norėdami sukurti pasikartojančią darbo vietą, turėtumėte pasinaudoti PasikartojantisDarbas klasė. Atminkite, kad planuodami darbus „Hangfire“ taip pat galite nurodyti „cron“ išraiškas. Šis kodo fragmentas parodo, kaip galite sukurti pasikartojantį darbą naudodami „Hangfire“ biblioteką.

RecurringJob.AddOrUpdate (() => Console.WriteLine ("Šis darbas bus vykdomas kartą per minutę"), Cron.Minutes);

Norėdami sužinoti daugiau informacijos, peržiūrėkite „Hangfire Highlighter“ pamoką.