Programovanie

Ako pracovať s Hangfire v C #

Plánovanie úloh vo webových aplikáciách je výzvou a pre danú úlohu si môžete vybrať z mnohých rámcov. Populárna otvorená knižnica zdrojov, Hangfire je rámec, ktorý sa dá použiť na plánovanie úloh na pozadí v .Net.

Prečo by som mal používať Hangfire?

V súčasnosti je k dispozícii veľa rámcov na plánovanie úloh. Prečo by ste potom mali používať Hangfire namiesto povedzme Quartz.Net, čo je ďalší populárny rámec, ktorý sa už dlho používa? Jednou z hlavných nevýhod aplikácie Quartz.Net je, že potrebuje službu Windows. Naopak, na používanie aplikácie Hangfire vo vašej aplikácii nepotrebujete službu Windows. Vďaka schopnosti pracovať bez služby Windows je Hangfire dobrou voľbou pre Quartz.Net. Hangfire využíva na spracovanie a vykonávanie úloh potrubie spracovania požiadaviek ASP.Net.

Upozorňujeme, že Hangfire sa neobmedzuje iba na webové aplikácie; môžete ho použiť aj vo svojich konzolových aplikáciách. Dokumentácia k Hangfire je veľmi podrobná a dobre štruktúrovaná a najlepšou vlastnosťou je vstavaný palubný panel. Informačný panel Hangfire zobrazuje podrobné informácie o úlohách, radoch, stave úloh atď.

Začíname

Ak chcete vytvoriť nový projekt v Visual Studio, ktorý využíva Hangfire, postupujte nasledovne:

  1. Otvorte Visual Studio 2015
  2. Kliknite na Súbor> Nové> Projekt
  3. V zozname zobrazených šablón projektu vyberte Visual C #> Web
  4. V zozname šablón webových projektov vyberte webovú aplikáciu ASP.Net
  5. Uložte projekt s názvom

Ďalším krokom je inštalácia a konfigurácia Hangfire vo vašej aplikácii; postup je celkom priamy. Hangfire môžete nainštalovať pomocou správcu balíkov NuGet v Visual Studio. Prípadne môžete na inštaláciu knižnice Hangfire tiež použiť Konzolu správcu balíkov. Predvolená inštalácia Hangfire používa server SQL Server na ukladanie informácií o plánovaní. Okrem toho môžete nainštalovať Hangfire.Redis, ak namiesto nej používate Redis na ukladanie.

Upozorňujeme, že Hangfire ukladá vaše úlohy na trvalé úložisko - skôr ako začnete používať Hangfire, musíte úložisko nakonfigurovať. Za týmto účelom vytvorte databázu a zadajte poverenia databázy v pripojovacom reťazci v konfiguračnom súbore. Nemusíte vytvárať tabuľky vo svojej databáze; Hangfire to urobí za vás automaticky. Uvidíme, ako a kedy sa to urobí neskôr.

Teraz, keď je vytvorená databáza a informácie o pripojovacom reťazci sú špecifikované v konfiguračnom súbore aplikácie, je ďalším krokom úprava súboru Startup.cs a poskytnutie potrebných informácií o pripojovacom reťazci. Nasledujúci zoznam kódov ilustruje, ako súbor Startup.cs vyzerá po zadaní podrobností konfigurácie.

pomocou Hangfire;

pomocou Microsoftu.Owin;

pomocou Owina;

pomocou systému;

[zhromaždenie: OwinStartupAttribute (Typ(HangFire.Startup))]

menný priestor HangFire

{

verejná čiastočná trieda Spustenie

    {

public void Configuration (aplikácia IAppBuilder)

        {

ConfigureAuth (aplikácia);

GlobalConfiguration.Configuration

.UseSqlServerStorage ("DefaultConnection");

BackgroundJob.Enqueue (() => Console.WriteLine ("Začíname s HangFire!"));

app.UseHangfireDashboard ();

app.UseHangfireServer ();

        }

    }

}

Všetci ste pripravený. Po spustení aplikácie a doplnení adresy URL znakom „/ hangfire“ sa zobrazí informačný panel Hangfire. Pri prvom spustení sa v databáze vytvorí nová tabuľka. Vytvorené tabuľky zahŕňajú AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set a State. Vytvorenie pozadia typu fire-and-forget v Hangfire je celkom jednoduché. Pozíciu na pozadí môžete vytvoriť pomocou Zaradiť do fronty () metóda BackgroundJob trieda. Tu je príklad:

BackgroundJob.Enqueue (() => Console.WriteLine ("Toto je úloha typu fire-and-forget, ktorá by bežala na pozadí."));

Oneskorená úloha na pozadí je taká, ktorá čaká (na interval oneskorenia), potom sa vykoná rovnakým spôsobom ako bežná úloha na pozadí spustiť a zabudnúť. Nasledujúci úryvok kódu ilustruje, ako môžete vytvoriť oneskorenú úlohu na pozadí pomocou Časový rozvrh () metóda BackgroundJob trieda.

BackgroundJob.Schedule (() => Console.WriteLine ("Táto úloha na pozadí by sa vykonala po oneskorení."), TimeSpan.FromMilliseconds (1000));

Ak by ste mali vykonávať úlohy, ktoré by sa vykonávali po určitom časovom intervale, bolo by potrebné vytvoriť opakujúce sa úlohy v Hangfire. Ak chcete vytvoriť opakovanú prácu, museli by ste využiť Opakujúca sa práca trieda. Upozorňujeme, že pri plánovaní úloh v Hangfire môžete určiť aj výrazy „cron“. Nasledujúci úryvok kódu ilustruje, ako môžete vytvoriť opakovanú úlohu pomocou knižnice Hangfire.

RecurringJob.AddOrUpdate (() => Console.WriteLine ("Táto úloha sa vykoná raz za každú minútu"), Cron.Minutely);

Ďalšie informácie nájdete v príručke Zvýrazňovač Hangfire.

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