Ohjelmointi

Kuinka työskennellä Hangfiren kanssa C #: ssä

Töiden ajoitus web-sovelluksissa on haaste, ja voit valita tehtävän monista kehyksistä. Suosittu avoimen lähdekoodin kirjasto Hangfire on yksi kehys, jota voidaan käyttää .Net-taustatöiden ajoitukseen.

Miksi minun pitäisi käyttää Hangfirea?

Nykyään on olemassa monia työaikataulujen kehyksiä. Miksi sinun pitäisi sitten käyttää Hangfirea esimerkiksi Quartz.Netin sijaan, joka on toinen suosittu kehys, joka on jo pitkään ollut käytössä? No, yksi Quartz.Netin suurimmista haitoista on, että se tarvitsee Windows-palvelun. Päinvastoin, et tarvitse Windows-palvelua käyttääksesi Hangfirea sovelluksessasi. Kyky ajaa ilman Windows-palvelua tekee Hangfirestä hyvän valinnan Quartz.Netiin nähden. Hangfire hyödyntää ASP.Net-palvelun pyyntöjen käsittelyputkea töiden käsittelemiseksi ja suorittamiseksi.

Huomaa, että Hangfire ei rajoitu vain verkkosovelluksiin; voit käyttää sitä myös konsoliohjelmissasi. Hangfiren dokumentaatio on hyvin yksityiskohtainen ja hyvin jäsennelty, ja paras ominaisuus on sen sisäänrakennettu kojelauta. Hangfire-kojelauta näyttää yksityiskohtaista tietoa töistä, jonoista, työpaikkojen tilasta ja niin edelleen.

Päästä alkuun

Voit luoda uuden projektin Visual Studiossa, joka hyödyntää Hangfirea, seuraavasti:

  1. Avaa Visual Studio 2015
  2. Napsauta Tiedosto> Uusi> Projekti
  3. Valitse Visual C #> Web näkyvistä projektimalleista
  4. Valitse ASP.Net-verkkosovellus Web-projektimallien luettelosta
  5. Tallenna projekti nimellä

Seuraava vaihe on Hangfiren asentaminen ja määrittäminen sovelluksessasi. prosessi on melko yksinkertainen. Voit asentaa Hangfiren Visual Studion NuGet Package Managerin kautta. Vaihtoehtoisesti voit käyttää Hangfire-kirjastoa myös Package Manager Consolella. Hangfiren oletusasennus käyttää SQL Serveria ajoitustietojen tallentamiseen. Voit myös asentaa Hangfire.Redis-sovelluksen, jos käytät sen sijaan Redistä varastointiin.

Huomaa, että Hangfire tallentaa työpaikkasi pysyvään tallennustilaan - sinun on määritettävä tallennustila ennen Hangfiren käytön aloittamista. Voit tehdä tämän luomalla tietokannan ja määrittämällä tietokannan tunnistetiedot määritystiedoston yhteysmerkkijonoon. Taulukoita ei tarvitse luoda tietokantaan; Hangfire tekee sen puolestasi automaattisesti. Näemme, miten ja milloin se tehdään myöhemmin.

Nyt kun tietokanta on luotu ja yhteysmerkkijonotiedot määritetty sovelluksen määritystiedostossa, seuraava vaihe on muokata Startup.cs-tiedostoa ja antaa tarvittavat yhteysmerkkijonotiedot. Seuraava koodiluettelo kuvaa, miten Startup.cs-tiedosto näyttää kokoonpanon yksityiskohtien määrittämisen jälkeen.

Hangfiren käyttö;

Microsoftin avulla.Owin;

käyttämällä Owin;

käyttämällä järjestelmää;

[assembly: OwinStartupAttribute (tyyppi(HangFire.Startup))]

nimitila HangFire

{

julkinen osaluokka Startup

    {

public void Configuration (IAppBuilder-sovellus)

        {

ConfigureAuth (sovellus);

GlobalConfiguration.Configuration

.UseSqlServerStorage ("DefaultConnection");

BackgroundJob.Enqueue (() => Console.WriteLine ("HangFiren käytön aloittaminen!"));

app.UseHangfireDashboard ();

app.UseHangfireServer ();

        }

    }

}

Olet valmis. Kun suoritat sovelluksen ja lisäät URL-osoitteeseen "/ hangfire", näet Hangfire-hallintapaneelin. Kun suoritat tämän ensimmäisen kerran, tietokantaan luodaan uusi taulukko. Luodut taulukot sisältävät AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set ja State. Palo-ja-unohda-taustan luominen Hangfiressa on melko yksinkertaista. Voit luoda taustatyön käyttämällä Enqueue () menetelmä TaustaTyö luokassa. Tässä on esimerkki:

BackgroundJob.Enqueue (() => Console.WriteLine ("Tämä on palo-ja-unohda -työ, joka suoritettaisiin taustalla."));

Viivästynyt taustatyö odottaa (viiveaikaa varten) ja suorittaa sitten samalla tavalla kuin normaali palo-ja-unohda -työtyö. Seuraava koodinpätkä kuvaa, kuinka voit luoda viivästetyn taustatyön käyttämällä Ajoittaa() menetelmä TaustaTyö luokassa.

BackgroundJob.Schedule (() => Console.WriteLine ("Tämä taustatyö suoritetaan viiveen jälkeen."), TimeSpan.FromMilliseconds (1000));

Jos teet töitä, jotka suoritetaan tietyn ajan kuluttua, sinun on luotava toistuvia työpaikkoja Hangfire-palvelussa. Jos haluat luoda toistuvan työpaikan, sinun on hyödynnettävä ToistuvaTyö luokassa. Huomaa, että voit määrittää myös cron-lausekkeita ajoitettaessa töitä Hangfiressa. Seuraava koodinpätkä kuvaa, kuinka voit luoda toistuvan työn Hangfire-kirjaston avulla.

RecurringJob.AddOrUpdate (() => Console.WriteLine ("Tämä työ suoritetaan kerran minuutissa"), Cron.Minutes);

Katso lisätietoja Hangfire Highlighter -oppaasta.