Hangfire funguje s většinou .NET platforem:.NET Framework 4.5 nebo novější, .NET Core 1.0 nebo novší, cokoli souvisejícího s . Platforma kompatibilní s NET Standard 1.3. Můžete ho integrovat téměř s jakýmkoli aplikačním frameworkem, včetně ASP.NET, ASP.NET Core, konzolových aplikací, Windows služeb, WCF a komunitních ovladačů jako Nancy nebo ServiceStack.
Vhodné scénáře:Pozadí odesílá e-mail asynchronně a co nejdříve odpoví uživateli. Plánované provádění úloh, cyklické provádění úloh, asynchronní provádění časově náročných úkolů, dokončení úkolu A a následné provádění úloh B a dávkové provádění úloh. Jak jsem to dělal já:
Do ASP.NET aplikace můžete vložit zpracování na pozadí bez použití jiných procesů, jako jsou Windows služby. Kód Hangfire je připraven k nasazeníNeočekávané ukončení procesu, recyklace aplikačního poolu a restart。 Kvůli použitíPerzistentní úložiště, tedy tyŽádné vedlejší práce nejsou ztraceny。
Nejprve jsou ztvárnění následující:
Obrázek výše je dashboard Hangfire Dashboard, který je velmi užitečný a může kontrolovat stav úkolů na pozadí, a navíc je velmi zajímavý, takže musí být nastavený.
Dashboard UI vyžaduje startovací třídu, jen pokudPři konfiguraci Hangfire s třídou Startup,Dashboard UILze ji použít。
Nejprve jsem nekonfiguroval dashboard Hangfire Dashboard a dostal jsem následující chybu:
Při pokusu o spuštění aplikace se objevily následující chyby. - Nebyla nalezena žádná sestava obsahující atribut OwinStartup. - Nebyla nalezena žádná sestava obsahující Startup nebo [AssemblyName]. Kurz startupů. Pro deaktivaci objevování OWIN při startu přidejte do web.config aplikaci appSetting owin:AutomaticAppStartup s hodnotou "false". Pro určení OWIN startovacího Assembleru, Třídy nebo Metody přidejte appSetting owin:AppStartup s plně kvalifikovanou startovací třídou nebo názvem konfigurační metody ve vašem web.config.
Řešení:
Při použití inicializace založené na Global.asax.cs možná budete muset také vypnout detekci startovací třídy v OWIN.
Blížíme se k věci, tutoriál začíná:
1: Rámec by měl vyhovovat potřebám hangfire,Můj projekt je .net 4.6.2, Takže můžete nainstalovat hangfire normálně, projekty .net 4.0 nemusí zkoušet, nejsou podporovány!
2: Příkaz nuget je následující:
3: Kurz OWIN Startup je navržen tak, aby logika bootstrapování webových aplikací byla pohromadě na jednom místě. Ve Visual Studio 2013 ji můžete přidat kliknutím pravým tlačítkem na projekt a výběrem položky menu Add/OWIN Startup Class. Jak je uvedeno níže:
Vytvořte nový Startup.cs soubor v kořenovém adresáři projektu.
4: KonfiguraceŘetězec připojení k databázi, verze SQL Server 2012, kterou zde používám, má konfiguraci ve web.config následující:
5: Nakonfigurujte Hangfire Dashboard tak, aby měl přístup k filtru, vytvořte novýHangfireAuthorizationFilter.csSoubor.
Ve výchozím nastavení je povolen pouze lokální přístup k Hangfire Dashboardu. Autorizace dashboardu musí být nakonfigurována tak, aby umožňovala vzdálený přístup.
6: Nakonfigurujte třídu Startup.cs, kód je následující:
7: Začněte projekt na webových stránkách
Spusť aplikaci F5 stisknutím debug mode (to vyžaduje podívat se na výstup metody Debug.WriteLine). Poté zkontrolujte následující zprávu v okně Výstup, zda bylo zpracování na pozadí úspěšně zahájeno.
Současně má databáze také 11 dalších tabulek, aby bylo zajištěno, že všechny úkoly mohou být prováděny normálně a nebudou ztraceny při IIS obnově nebo restartu procesu, jak je znázorněno na obrázku níže:
http://<your-web-app>/hangfire Navštivte URL rozhraní dashboardu, kde najdete zobrazení v horní části článku.
Připojené použití
Fire-and-forget (publikovat/odebírat)
Toto je hlavní typ pozadí úkolu, který perzistentní fronta zpráv zpracovává. Když vytvoříte úlohu publikovat/odběr, úkol se uloží do výchozí fronty (výchozí fronta je "Default", ale podporuje více front). Více dedikovaných pracovníků poslouchá tuto frontu, načítá z ní úkoly a dokončuje úkoly.
Zpoždění
Pokud chcete oddálit provádění určitých úkolů, můžete použít následující úkoly. Po určité době zpoždění je úkol zařazen do fronty a vykonán jako úkol publikovat/odebírat.
Loop
Pro volání metody podle periodicity (hodiny, dny atd.) použijte třídu RecurringJob. V složitých situacích můžete použít CRON výrazy k určení plánovaného času pro zpracování úkolů.
Spojité
Kontinuita umožňuje definovat složité pracovní postupy propojením více úkolů na pozadí.
Oficiální odkaz na dokumentaci:Přihlášení k hypertextovému odkazu je viditelné.
(Konec)
|