Hangfire werkt met de meeste .NET-platforms:.NET Framework 4.5 of later, .NET Core 1.0 of later, alles wat met . te maken heeft. NET Standard 1.3-compatibel platform. Je kunt het integreren met bijna elk applicatieframework, waaronder ASP.NET, ASP.NET Core, consoleapplicaties, Windows-diensten, WCF en communitydrivers zoals Nancy of ServiceStack.
Toepasselijke scenario's:De achtergrond stuurt de e-mail asynchroon en geeft zo snel mogelijk een antwoord terug aan de gebruiker. Geplande uitvoering van taken, cyclische uitvoering van taken, asynchrone uitvoering van tijdrovende taken, voltooiing van taak A uitvoering en vervolgens uitvoering van taken B, en batchuitvoering van taken. Hoe ik het vroeger deed:
Je kunt achtergrondverwerking in ASP.NET applicatie zetten zonder andere processen zoals Windows-services te gebruiken. De code van Hangfire is klaar voor inzetOnverwachte procesbeëindiging, applicatiepoolrecycling en herstart。 Door het gebruikPersistente opslag, vandaar jijEr gaan geen achtergrondbanen verloren。
Ten eerste zijn de renderings als volgt:
De bovenstaande afbeelding is het Hangfire Dashboard-dashboard, dat erg handig is en de status van achtergrondtaken kan controleren, en het is ook erg gaaf, dus het moet geconfigureerd worden.
De dashboard-UI vereist een opstartklasse, alleen als jeBij het configureren van Hangfire met de Startup-klasse,Dashboard UIHet kan gebruikt worden。
In het begin heb ik het Hangfire Dashboard-dashboard niet geconfigureerd en kreeg ik de volgende foutmelding:
De volgende fouten deden zich voor bij het proberen van de app te laden. - Geen assembly gevonden met een OwinStartupAttribute. - Geen assembly gevonden met een Startup of [AssemblyName]. Startup-cursus. Om de opstartontdekking van OWIN uit te schakelen, voeg je de appSetting owin:AutomaticAppStartup toe met de waarde "false" in je web.config. Om de OWIN-startup Assembly, Klasse of Methode te specificeren, voeg je de appSetting owin:AppStartup toe met de volledig gekwalificeerde opstartklasse of configuratiemethodnaam in je web.config.
Oplossing:
Bij het gebruik van Global.asax.cs-gebaseerde initialisatie moet je mogelijk ook de detectie van opstartklassen in OWIN uitschakelen.
We komen bij het punt, de tutorial begint:
1: Het kader moet voldoen aan de behoeften van hangfire,Mijn project is .net 4.6.2, Dus je kunt Hangfire normaal installeren, .NET 4.0-projecten hoeven het niet te proberen, worden niet ondersteund!
2: Het nuget-commando is als volgt:
3: De OWIN Startup-klasse is ontworpen om de bootstrappinglogica van de webapplicatie op één plek te houden. In Visual Studio 2013 kun je het toevoegen door met de rechtermuisknop op het project te klikken en het menu-item Add/OWIN Startup Class te selecteren. Zoals hieronder getoond:
Maak een nieuw Startup.cs-bestand aan in de rootmap van het project.
4: Configuratiedatabaseverbindingsstring, de SQL Server 2012-versie die ik hier gebruik, is de configuratie in web.config als volgt:
5: Configureer het Hangfire-dashboard om toegang te krijgen tot het filter, maak een nieuw aanHangfireAuthorizationFilter.csBestand.
Standaard is alleen lokale toegang tot het Hangfire Dashboard toegestaan. Dashboardautorisatie moet zo worden geconfigureerd dat externe toegang mogelijk is.
6: Configureer de Startup.cs klasse, de code is als volgt:
7: Start een websiteproject
Voer de applicatie F5 uit door op debugmodus te drukken (dit vereist dat je naar de output van de Debug.WriteLine-methode kijkt). Controleer vervolgens het volgende bericht in het Output-venster om te zien of de achtergrondverwerking succesvol is gestart.
Tegelijkertijd heeft de database ook 11 extra tabellen om ervoor te zorgen dat alle taken normaal kunnen worden uitgevoerd en dat de taken niet verloren gaan bij IIS-herstel of procesherstart, zoals weergegeven in de onderstaande figuur:
http://<your-web-app>/hangfire Bezoek de Dashboard UI URL om de rendering bovenaan het artikel te zien.
Aangesloten gebruik
Fire-and-forget (publiceren/abonneren)
Dit is het belangrijkste type achtergrondtaak dat de persistente berichtwachtrij afhandelt. Wanneer je een publiceer/abonneer-taak aanmaakt, wordt de taak opgeslagen in de standaardwachtrij (de standaardwachtrij is "Standaard", maar meerdere wachtrijen worden ondersteund). Meerdere toegewijde medewerkers luisteren naar deze wachtrij en halen taken eruit en voltooien taken.
Vertraging
Als je de uitvoering van bepaalde taken wilt vertragen, kun je de volgende taken gebruiken. Na een bepaalde vertragingstijd wordt de taak in de wachtrij gezet en uitgevoerd zoals een publiceer/abonneertaak.
Loop
Om de methode aan te roepen op periodiciteit (uren, dagen, enz.), gebruik je de RecurringJob-klasse. In complexe scenario's kun je CRON-expressies gebruiken om een geplande tijd voor het verwerken van taken aan te geven.
Continu
Continuïteit stelt je in staat om complexe workflows te definiëren door meerdere achtergrondtaken aan elkaar te koppelen.
Officiële documentatielink:De hyperlink-login is zichtbaar.
(Einde)
|