Hangfire funcționează cu majoritatea platformelor .NET:.NET Framework 4.5 sau mai târziu, .NET Core 1.0 sau versiune ulterioară, orice legat de . Platformă compatibilă NET Standard 1.3. Îl poți integra cu aproape orice framework de aplicații, inclusiv ASP.NET, ASP.NET Core, aplicații de consolă, servicii Windows, WCF și drivere comunitare precum Nancy sau ServiceStack.
Scenarii aplicabile:Fundalul trimite emailul asincron și returnează un răspuns utilizatorului cât mai curând posibil. Execuția programată a sarcinilor, execuția ciclică a sarcinilor, execuția asincronă a sarcinilor consumatoare de timp, finalizarea executării sarcinii A și apoi executarea sarcinilor B, precum și execuția în loturi a sarcinilor. Cum obișnuiam să o fac:
Poți introduce procesare în fundal în aplicație ASP.NET fără să folosești alte procese precum serviciile Windows. Codul Hangfire este gata de implementareTerminarea neașteptată a procesului, reciclarea pool-ului de aplicații și repornirea。 Din cauza utilizăriiStocare persistentă, de aceea tuNu se pierd niciun loc de muncă de fundal。
În primul rând, randările sunt următoarele:
Imaginea de mai sus este dashboard-ul Hangfire Dashboard, care este foarte util și poate verifica starea sarcinilor în fundal, și este și foarte interesant, deci trebuie configurat.
Interfața dashboard-ului necesită o clasă de pornire, doar dacăCând configurezi Hangfire cu clasa Startup,UI DashboardPoate fi folosit。
La început, nu am configurat dashboard-ul Hangfire Dashboard și am primit următoarea eroare:
Următoarele erori au apărut în încercarea de încărcare a aplicației. - Nu s-a găsit nicio asamblare care să conțină un OwinStartupAttribut. - Nu s-a găsit nicio asamblare care să conțină un Startup sau [AssemblyName]. Curs de pornire. Pentru a dezactiva descoperirea de pornire OWIN, adaugă appSetting owin:AutomaticAppStartup cu valoarea "false" în web.config-ul tău. Pentru a specifica Assembly-ul, Clasa sau Metoda de pornire OWIN, adăugați appSetting owin:AppStartup cu clasa de pornire complet calificată sau numele metodei de configurare în web.config.
Soluție:
Când folosești inițializarea bazată pe Global.asax.cs, este posibil să fie nevoie să dezactivezi și detectarea clasei de pornire a OWIN.
Ajungem la subiect, tutorialul începe:
1: Cadrul ar trebui să răspundă nevoilor hangfire,Proiectul meu este .net 4.6.2, Deci, poți instala Hangfire normal, proiectele .net 4.0 nu trebuie să încerce, nu sunt suportate!
2: Comanda nuget este următoarea:
3: Clasa OWIN Startup este concepută pentru a menține logica de pornire a aplicației web într-un singur loc. În Visual Studio 2013, îl poți adăuga făcând clic dreapta pe proiect și selectând elementul din meniul Add/OWIN Startup Class. Așa cum se arată mai jos:
Creează un nou fișier Startup.cs în directorul rădăcină al proiectului.
4: ConfigurațieȘirul de conexiune la baze de date, versiunea SQL Server 2012 pe care o folosesc aici, configurația din web.config este următoarea:
5: Configurează Dashboard-ul Hangfire pentru a accesa filtrul, creează unul nouHangfireAuthorizationFilter.csFișier.
În mod implicit, este permis doar accesul local la Dashboard-ul Hangfire. Autorizarea pentru tabloul de bord trebuie configurată pentru a permite accesul de la distanță.
6: Configurați clasa Startup.cs, codul este următorul:
7: Începerea unui proiect de site web
Rulați aplicația F5 apăsând modul debug (acest lucru necesită consultarea rezultatului metodei Debug.WriteLine). Apoi verifică următorul mesaj din fereastra de ieșire pentru a vedea dacă procesarea în fundal a început cu succes.
În același timp, baza de date are și alte 11 tabele pentru a se asigura că toate sarcinile pot fi executate normal, iar sarcinile nu se vor pierde în urma recuperării IIS sau la repornirea procesului, așa cum se arată în figura de mai jos:
http://<your-web-app>/foc suspendat Vizitează URL-ul interfeței Dashboard pentru a vedea randarea din partea de sus a articolului.
Utilizare atașată
Fire-And-forget (publică/abonează-te)
Acesta este principalul tip de sarcină în fundal pe care o gestionează coada de mesaje persistente. Când creezi o sarcină de publicare/abonare, sarcina va fi salvată în coada implicită (coada implicită este "Default", dar sunt suportate cozi multiple). Mai mulți angajați dedicați ascultă această coadă, preiau sarcini din ea și finalizează sarcinile.
Întârziere
Dacă doriți să amânați executarea anumitor sarcini, puteți folosi următoarele sarcini. După un anumit timp de întârziere, sarcina este pusă în coadă și executată ca o sarcină de publicare/abonare.
Buclă
Pentru a chema metoda după periodicitate (ore, zile etc.), folosește clasa RecurringJob. În scenarii complexe, poți folosi expresii CRON pentru a specifica un timp programat pentru procesarea sarcinilor.
Continuu
Continuitatea îți permite să definești fluxuri de lucru complexe prin legarea mai multor sarcini în fundal.
Link pentru documentația oficială:Autentificarea cu hyperlink este vizibilă.
(Sfârșit)
|