Programování

Jak pracovat s Hangfire v C #

Plánování úloh ve webových aplikacích je výzvou a pro tento úkol si můžete vybrat z mnoha rámců. Populární knihovna s otevřeným zdrojovým kódem, Hangfire je rámec, který lze použít k plánování úloh na pozadí v .Net.

Proč bych měl používat Hangfire?

Dnes existuje mnoho rámců pro plánování úloh. Proč byste tedy měli používat Hangfire místo, řekněme, Quartz.Net, což je další populární framework, který se už dlouho používá? Jednou z hlavních nevýhod Quartz.Net je, že potřebuje službu Windows. Naopak, k používání Hangfire ve vaší aplikaci nepotřebujete službu Windows. Díky možnosti spuštění bez služby Windows je Hangfire dobrou volbou pro Quartz.Net. Hangfire využívá ke zpracování a provádění úloh výhodu kanálu zpracování požadavků ASP.Net.

Pamatujte, že Hangfire se neomezuje pouze na webové aplikace; můžete jej také použít ve svých konzolových aplikacích. Dokumentace pro Hangfire je velmi podrobná a dobře strukturovaná a nejlepší vlastností je její vestavěný řídicí panel. Řídicí panel Hangfire zobrazuje podrobné informace o úlohách, frontách, stavu úloh atd.

Začínáme

Chcete-li vytvořit nový projekt v sadě Visual Studio, který využívá Hangfire, postupujte takto:

  1. Otevřete Visual Studio 2015
  2. Klikněte na Soubor> Nový> Projekt
  3. V seznamu zobrazených šablon projektů vyberte Visual C #> Web
  4. V seznamu šablon webových projektů vyberte webovou aplikaci ASP.Net
  5. Uložte projekt s názvem

Dalším krokem je instalace a konfigurace Hangfire ve vaší aplikaci; proces je celkem přímočarý. Hangfire můžete nainstalovat pomocí Správce balíčků NuGet v sadě Visual Studio. K instalaci knihovny Hangfire můžete také použít konzolu Správce balíčků. Výchozí instalace Hangfire používá k ukládání informací o plánování SQL Server. Kromě toho můžete nainstalovat Hangfire.Redis, pokud místo toho používáte Redis pro úložiště.

Pamatujte, že Hangfire ukládá vaše úlohy na trvalé úložiště - musíte úložiště nakonfigurovat, než začnete používat Hangfire. Chcete-li to provést, vytvořte databázi a zadejte pověření databáze v připojovacím řetězci v konfiguračním souboru. Nemusíte vytvářet tabulky ve své databázi; Hangfire to udělá za vás automaticky. Uvidíme, jak a kdy to bude provedeno později.

Nyní, když byla vytvořena databáze a informace o připojovacím řetězci zadány v konfiguračním souboru aplikace, je dalším krokem upravit soubor Startup.cs a poskytnout potřebné informace o připojovacím řetězci. Následující výpis kódu ukazuje, jak soubor Startup.cs vypadá po zadání podrobností konfigurace.

pomocí Hangfire;

pomocí Microsoftu.Owine;

pomocí Owina;

pomocí systému;

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

jmenný prostor HangFire

{

veřejné částečné spuštění třídy

    {

public void Configuration (aplikace IAppBuilder)

        {

ConfigureAuth (aplikace);

GlobalConfiguration.Configuration

.UseSqlServerStorage ("DefaultConnection");

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

app.UseHangfireDashboard ();

app.UseHangfireServer ();

        }

    }

}

Jste připraveni. Když spustíte aplikaci a přidáte příponu URL pomocí „/ hangfire“, zobrazí se řídicí panel Hangfire. Když to provedete úplně poprvé, vytvoří se v databázi nová tabulka. Vytvořené tabulky zahrnují AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set a State. Vytvoření pozadí Fire-and-Forget v Hangfire je docela jednoduché. Úlohu na pozadí můžete vytvořit pomocí Zařadit do fronty() metoda Pozadí třída. Zde je příklad:

BackgroundJob.Enqueue (() => Console.WriteLine ("Toto je úloha typu" zapomeň a zapomeň ", která by běžela na pozadí."));

Zpožděná úloha na pozadí je ta, která čeká (na interval zpoždění) a poté se provádí podobně jako normální úloha na pozadí, která se spouští a zapomíná. Následující fragment kódu ukazuje, jak pomocí úlohy můžete vytvořit úlohu zpožděného pozadí Plán() metoda Pozadí třída.

BackgroundJob.Schedule (() => Console.WriteLine ("Tato úloha na pozadí by se provedla po zpoždění."), TimeSpan.FromMilliseconds (1000));

Pokud byste měli spouštět úlohy, které by se prováděly po určitém časovém intervalu, budete muset v Hangfire vytvořit opakující se úlohy. Chcete-li vytvořit opakující se úlohu, budete muset využít Opakující se práce třída. Pamatujte, že při plánování úloh v Hangfire můžete také určit výrazy „cron“. Následující fragment kódu ukazuje, jak můžete vytvořit opakující se úlohu pomocí knihovny Hangfire.

RecurringJob.AddOrUpdate (() => Console.WriteLine ("Tato úloha se provede jednou za každou minutu"), Cron.Minutely);

Další informace najdete v kurzu Zvýrazňovač Hangfire.

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