Hangfire fungerar med de flesta .NET-plattformar:.NET Framework 4.5 eller senare, .NET Core 1.0 eller senare, allt relaterat till . NET Standard 1.3-kompatibel plattform. Du kan integrera det med nästan vilket applikationsramverk som helst, inklusive ASP.NET, ASP.NET Core, konsolapplikationer, Windows-tjänster, WCF och communitydrivrutiner som Nancy eller ServiceStack.
Tillämpliga scenarier:Bakgrunden skickar mejlet asynkront och svarar användaren så snart som möjligt. Schemalagd exekvering av uppgifter, cyklisk exekvering av uppgifter, asynkron exekvering av tidskrävande uppgifter, slutförande av uppgift A-exekvering och sedan exekvering av B-uppgifter, samt batchkörning av uppgifter. Så här brukade jag göra:
Du kan lägga bakgrundsbearbetning i ASP.NET applikation utan att använda andra processer som Windows-tjänster. Hangfires kod är redo för utplaceringOväntad processavslutning, återvinning av applikationspoolen och omstart。 På grund av användningenPersistent lagring, alltså duInga bakgrundsjobb går förlorade。
För det första är renderingarna följande:
Bilden ovan är Hangfire Dashboard-instrumentpanelen, som är mycket användbar och kan kontrollera status på bakgrundsuppgifter, och den är också väldigt häftig, så den måste konfigureras.
Dashboard-gränssnittet kräver en startkurs, endast om duNär jag konfigurerar Hangfire med Startup-klassen,Dashboard UIDen kan användas。
Först konfigurerade jag inte Hangfire Dashboard-dashboarden och fick följande fel:
Följande fel uppstod när jag försökte ladda appen. - Ingen assembler hittades som innehåller ett OwinStartupAttribute. - Ingen assembler hittades som innehåller en Startup eller [AssemblyName]. Startkurs. För att inaktivera upptäckt av OWIN-uppstart, lägg till appSetting owin:AutomaticAppStartup med värdet "false" i din web.config. För att specificera OWIN-startup-assembly, klass eller metod, lägg till appSetting owin:AppStartup med namnet på den fullt kvalificerade startup-klassen eller konfigurationsmetoden i din web.config.
Lösning:
När du använder Global.asax.cs-baserad initialisering kan du också behöva inaktivera OWINS uppstartsklassdetektering.
Vi börjar komma till saken, handledningen börjar:
1: Ramen ska möta behoven för hangfire,Mitt projekt är .net 4.6.2, Så du kan installera hangfire som vanligt, .NET 4.0-projekt behöver inte försöka, det stöds inte!
2: Nuget-kommandot är följande:
3: OWIN Startup-klassen är utformad för att hålla webbapplikationens bootstrappningslogik på ett ställe. I Visual Studio 2013 kan du lägga till det genom att högerklicka på projektet och välja menypunkten Add/OWIN Startup Class. Som visas nedan:
Skapa en ny Startup.cs-fil i projektets rotkatalog.
4: KonfigurationDatabasanslutningssträng, SQL Server 2012-versionen jag använder här, konfigurationen i web.config är följande:
5: Konfigurera Hangfire-dashboarden för att komma åt filtret, skapa en nyHangfireAuthorizationFilter.csFil.
Som standard är endast lokal åtkomst till Hangfire-instrumentpanelen tillåten. Dashboard-auktorisering måste konfigureras för att tillåta fjärråtkomst.
6: Konfigurera Startup.cs-klassen, koden är följande:
7: Starta ett webbplatsprojekt
Kör applikationen F5 genom att trycka på debug-läget (detta kräver att du tittar på utdata från metoden Debug.WriteLine). Kontrollera sedan följande meddelande i utdatafönstret för att se om bakgrundsbearbetningen har startat framgångsrikt.
Samtidigt har databasen också 11 ytterligare tabeller för att säkerställa att alla uppgifter kan utföras normalt, och att uppgifterna inte går förlorade vid IIS-återvinning eller processomstart, som visas i figuren nedan:
http://<your-web-app>/hangfire Besök webbadressen till Dashboard UI för att se renderingen högst upp i artikeln.
Ansluten användning
Fire-and-forget (publicera/prenumerera)
Detta är den huvudsakliga typen av bakgrundsuppgift som den persistenta meddelandekön hanterar. När du skapar en publicera/prenumerera uppgift sparas uppgiften i standardkön (standardkön är "Standard", men flera köer stöds). Flera dedikerade arbetare lyssnar på denna kö och hämtar uppgifter därifrån och slutför uppgifter.
Fördröjning
Om du vill fördröja genomförandet av vissa uppgifter kan du använda följande uppgifter. Efter en given fördröjningstid köas uppgiften och körs som en publicera/prenumerera-uppgift.
Loop
För att anropa metoden efter periodicitet (timmar, dagar, etc.), använd klassen RecurringJob. I komplexa scenarier kan du använda CRON-uttryck för att ange en schemalagd tid för att hantera uppgifter.
Kontinuerlig
Kontinuitet gör det möjligt att definiera komplexa arbetsflöden genom att länka ihop flera bakgrundsuppgifter.
Officiell dokumentationslänk:Inloggningen med hyperlänken är synlig.
(Slut)
|