Hangfire deluje z večino .NET platform:.NET Framework 4.5 ali novejši, .NET Core 1.0 ali novejši, vse, kar je povezano z . Platforma združljiva z NET Standard 1.3. Lahko ga integrirate skoraj z vsakim aplikacijskim ogrodjem, vključno z ASP.NET, ASP.NET Core, konzolnimi aplikacijami, Windows storitvami, WCF in skupnostnimi gonilniki, kot sta Nancy ali ServiceStack.
Primerni scenariji:Ozadje pošlje e-pošto asinhrono in uporabniku čim prej vrne odgovor. Načrtovano izvajanje nalog, ciklično izvajanje nalog, asinhrono izvajanje časovno zahtevnih nalog, dokončanje izvajanja naloge A in nato izvajanje nalog B ter serijsko izvajanje nalog. Kako sem to počel jaz:
V ASP.NET aplikaciji lahko namestite ozadno obdelavo brez uporabe drugih procesov, kot so Windows storitve. Hangfireova koda je pripravljena za uporaboNepričakovano prekinitev procesa, recikliranje aplikacijskega bazena in ponovni zagon。 Zaradi uporabeTrajno shranjevanje, torej tiNobeno delo v ozadju ni izgubljeno。
Najprej so upodobitve naslednje:
Zgornja slika prikazuje nadzorno ploščo Hangfire Dashboard, ki je zelo uporabna in lahko preverja stanje ozadnih nalog, poleg tega pa je zelo zanimiva, zato jo je treba konfigurirati.
Vmesnik nadzorne plošče zahteva tečaj za zagon, samo čePri konfiguraciji Hangfire z razredom Startup,Dashboard UILahko se uporablja。
Sprva nisem konfiguriral nadzorne plošče Hangfire Dashboard in sem dobil naslednjo napako:
Naslednje napake so se pojavile med poskusom nalaganja aplikacije. - Ni najdene nobene skupščine, ki bi vsebovala atribut OwinStartup. - Ni najdene nobene skupščine, ki bi vsebovala zagon ali [AssemblyName]. Tečaj za zagon. Za onemogočanje odkrivanja zagona OWIN dodajte appSetting owin:AutomaticAppStartup z vrednostjo "false" v web.config. Za določitev OWIN zagonskega Assembly, Class ali Method dodajte appSetting owin:AppStartup z imenom popolnoma kvalificiranega zagonskega razreda ali konfiguracijske metode v vašem web.config.
Rešitev:
Pri uporabi inicializacije na osnovi Global.asax.cs boste morda morali onemogočiti tudi zaznavanje zagonskih razredov v OWIN-u.
Začnemo k bistvu, uvodni vodič se začne:
1: Okvir naj ustreza potrebam hangfire,Moj projekt je .net 4.6.2, Torej lahko normalno namestite hangfire, .net 4.0 projekti jih ni treba poskušati, niso podprti!
2: Nuget ukaz je naslednji:
3: Tečaj OWIN Startup je zasnovan tako, da ohranja logiko zagona spletnih aplikacij na enem mestu. V Visual Studio 2013 ga lahko dodate z desnim klikom na projekt in izbiro menija Add/OWIN Startup Class. Kot je prikazano spodaj:
Ustvarite novo Startup.cs datoteko v korenski mapi projekta.
4: KonfiguracijaPovezovalni niz podatkovne baze, različica SQL Server 2012, ki jo uporabljam tukaj, konfiguracija v web.config je naslednja:
5: Konfigurirajte Hangfire nadzorno ploščo za dostop do filtra, ustvarite novoHangfireAuthorizationFilter.csDatoteka.
Privzeto je dovoljen le lokalni dostop do Hangfire nadzorne plošče. Avtorizacija nadzorne plošče mora biti konfigurirana tako, da omogoča oddaljen dostop.
6: Konfigurirajte razred Startup.cs, koda je naslednja:
7: Začni spletni projekt
Aplikacijo F5 zaženite s pritiskom na način debug (to zahteva pregled izhoda metode Debug.WriteLine). Nato preverite naslednje sporočilo v oknu Izhod, da preverite, ali se je ozadna obdelava uspešno začela.
Hkrati ima baza podatkov še 11 dodatnih tabel, ki zagotavljajo, da se vse naloge lahko izvajajo normalno in da naloge ne bodo izgubljene med IIS rekultivacijo ali ponovnim zagonom procesov, kot je prikazano na spodnji sliki:
http://<your-web-app>/hangfire Obiščite URL uporabniškega vmesnika nadzorne plošče, da si ogledate upodobitev na vrhu članka.
Priložena uporaba
Ogenj in pozabi (objavi/naročina)
To je glavna vrsta ozadne naloge, ki jo obravnava trajna vrsta sporočil. Ko ustvarite nalogo objave/naročnine, se naloga shrani v privzeto vrsto (privzeta vrsta je "Privzeta", vendar je podprtih več vrst). Več predanih delavcev posluša to čakalno vrsto, iz nje pridobiva naloge in opravlja naloge.
Zamuda
Če želite odložiti izvajanje določenih nalog, lahko uporabite naslednje naloge. Po določenem času zamude se naloga postavi v vrsto in izvede kot naloga za objavo/naročanje.
Loop
Za klicanje metode po periodičnosti (ure, dnevi itd.) uporabite razred RecurringJob. V zapletenih primerih lahko uporabite CRON izraze za določitev načrtovanega časa za obdelavo nalog.
Neprekinjeno
Kontinuiteta vam omogoča definiranje zapletenih delovnih tokov z združevanjem več ozadnih opravil.
Povezava do uradne dokumentacije:Prijava do hiperpovezave je vidna.
(Konec)
|