Hangfire fungerer med de fleste .NET-platforme:.NET Framework 4.5 eller nyere, .NET Core 1.0 eller nyere, alt relateret til . NET Standard 1.3-kompatibel platform. Du kan integrere det med næsten ethvert applikationsframework, inklusive ASP.NET, ASP.NET Core, konsolapplikationer, Windows-tjenester, WCF og fællesskabsdrivere som Nancy eller ServiceStack.
Relevante scenarier:Baggrunden sender e-mailen asynkront og returnerer et svar til brugeren så hurtigt som muligt. Planlagt udførelse af opgaver, cyklisk udførelse af opgaver, asynkron udførelse af tidskrævende opgaver, gennemførelse af opgave A udførelse og derefter udførelse af B opgaver, samt batchudførelse af opgaver. Sådan plejede jeg at gøre det:
Du kan lægge baggrundsbehandling i ASP.NET applikation uden at bruge andre processer som Windows-tjenester. Hangfires kode er klar til udrulningUventet procesafslutning, genbrug af applikationspoolen og genstart。 På grund af brugenVedvarende lagring, altså digIngen baggrundsjob går tabt。
For det første er gengivelserne som følger:
Billedet ovenfor er Hangfire Dashboard-dashboardet, som er meget nyttigt og kan tjekke status på baggrundsopgaver, og det er også meget fedt, så det skal konfigureres.
Dashboard-UI'en kræver en opstartsklasse, kun hvis duNår jeg konfigurerer Hangfire med Startup-klassen,Dashboard-brugerfladeDen kan bruges。
Først konfigurerede jeg ikke Hangfire Dashboard-dashboardet og fik følgende fejl:
Følgende fejl opstod under forsøget på at indlæse appen. - Ingen assembly fundet, der indeholder en OwinStartupAttribute. - Ingen assembly fundet, der indeholder en Startup eller [AssemblyName]. Startup-kursus. For at deaktivere OWIN startup-opdagelse skal appSetting owin:AutomaticAppStartup tilføjes med værdien "false" i din web.config. For at specificere OWIN-opstartssamlingen, klassen eller metoden, tilføj appSetting owin:AppStartup med den fuldt kvalificerede opstartsklasse eller konfigurationsmetodenavn i din web.config.
Opløsning:
Når du bruger Global.asax.cs-baseret initialisering, kan du også være nødt til at deaktivere OWIN's opstartsklassedetektion.
Vi begynder at komme til pointen, tutorialen begynder:
1: Rammen skal opfylde behovene for hangfire,Mit projekt er .net 4.6.2, Så du kan installere Hangfire normalt, .NET 4.0-projekter behøver ikke prøve, det understøttes ikke!
2: Nuget-kommandoen er som følger:
3: OWIN Startup-klassen er designet til at holde webapplikationens bootstrapping-logik samlet ét sted. I Visual Studio 2013 kan du tilføje det ved at højreklikke på projektet og vælge menupunktet Add/OWIN Startup Class. Som vist nedenfor:
Opret en ny Startup.cs-fil i projektets rodmappe.
4: KonfigurationDatabaseforbindelsesstreng, SQL Server 2012-versionen jeg bruger her, konfigurationen i web.config er som følger:
5: Konfigurer Hangfire-dashboardet til at få adgang til filteret, og opret et nytHangfireAuthorizationFilter.csFil.
Som standard er kun lokal adgang til Hangfire Dashboardet tilladt. Dashboard-autorisation skal konfigureres til at tillade fjernadgang.
6: Konfigurer Startup.cs-klassen, koden er som følger:
7: Start et websiteprojekt
Kør applikationen F5 ved at trykke på debug-tilstand (det kræver, at du ser på outputtet fra Debug.WriteLine-metoden). Tjek derefter følgende besked i Output-vinduet for at se, om baggrundsbehandlingen er startet med succes.
Samtidig har databasen også 11 yderligere tabeller for at sikre, at alle opgaver kan udføres normalt, og at opgaverne ikke går tabt under IIS-genopretning eller procesgenstart, som vist i figuren nedenfor:
http://<your-web-app>/hangfire Besøg Dashboard UI-URL'en for at se renderingen øverst i artiklen.
Tilknyttet brug
Fire-and-forget (udgiv/abonner)
Dette er den primære type baggrundsopgave, som den vedvarende beskedkø håndterer. Når du opretter en publicér/abonner-opgave, gemmes opgaven i standardkøen (standardkøen er "Standard", men flere køer understøttes). Flere dedikerede medarbejdere lytter til denne kø og henter opgaver derfra og udfører opgaver.
Forsinkelse
Hvis du vil udsætte udførelsen af visse opgaver, kan du bruge følgende opgaver. Efter en given forsinkelsestid sættes opgaven i kø og udføres som en publicér/abonner-opgave.
Loop
For at kalde metoden efter periodicitet (timer, dage osv.), brug klassen RecurringJob. I komplekse scenarier kan du bruge CRON-udtryk til at angive et planlagt tidspunkt for at behandle opgaver.
Kontinuerlig
Kontinuitet giver dig mulighed for at definere komplekse arbejdsgange ved at forbinde flere baggrundsopgaver.
Officiel dokumentationslink:Hyperlink-login er synlig.
(Slut)
|