Hangfire fungerer med de fleste .NET-plattformer:.NET Framework 4.5 eller nyere, .NET Core 1.0 eller nyere, alt relatert til . NET Standard 1.3-kompatibel plattform. Du kan integrere det med nesten hvilket som helst applikasjonsrammeverk, inkludert ASP.NET, ASP.NET Core, konsollapplikasjoner, Windows-tjenester, WCF og fellesskapsdrivere som Nancy eller ServiceStack.
Relevante scenarier:Bakgrunnen sender e-posten asynkront og returnerer et svar til brukeren så snart som mulig. Planlagt utførelse av oppgaver, syklisk utførelse av oppgaver, asynkron utførelse av tidkrevende oppgaver, fullføring av oppgave A og deretter utførelse av oppgaver B, samt batchutførelse av oppgaver. Slik pleide jeg å gjøre det:
Du kan legge bakgrunnsprosessering i ASP.NET applikasjon uten å bruke andre prosesser som Windows-tjenester. Hangfires kode er klar for utrullingUventet prosessavslutning, resirkulering av applikasjonspoolen og omstart。 På grunn av brukenVedvarende lagring, altså degIngen bakgrunnsjobber går tapt。
Først er gjengivelsene som følger:
Bildet over er Hangfire Dashboard-dashbordet, som er veldig nyttig og kan sjekke status på bakgrunnsoppgaver, og det er også veldig kult, så det må konfigureres.
Dashbordgrensesnittet krever en oppstartsklasse, bare hvis duNår jeg konfigurerer Hangfire med Startup-klassen,DashbordgrensesnittDen kan brukes。
Først konfigurerte jeg ikke Hangfire Dashboard-dashbordet og fikk følgende feilmelding:
Følgende feil oppsto under forsøk på å laste appen. - Ingen assembler funnet som inneholder en OwinStartupAttribute. - Ingen samling funnet som inneholder en oppstart eller [AssemblyName]. Oppstartskurs. For å deaktivere OWIN-oppstartsoppdagelse, legg til appSetting owin:AutomaticAppStartup med verdien "false" i web.config din. For å spesifisere OWIN-oppstartsassembly, klasse eller metode, legg til appSetting owin:AppStartup med det fullt kvalifiserte oppstartsklassen eller konfigurasjonsmetodenavnet i web.config-en din.
Løsning:
Når du bruker Global.asax.cs-basert initialisering, kan det også være nødvendig å deaktivere OWINS oppstartsklassedeteksjon.
Vi begynner å komme til poenget, opplæringen begynner:
1: Rammeverket bør møte behovene til hangfire,Prosjektet mitt er .net 4.6.2, Så, du kan installere Hangfire som vanlig, .NET 4.0-prosjekter trenger ikke å prøve, det støttes ikke!
2: Nuget-kommandoen er som følger:
3: OWIN-oppstartsklassen er designet for å holde webapplikasjonens oppstarts-logikk samlet på ett sted. I Visual Studio 2013 kan du legge det til ved å høyreklikke på prosjektet og velge menypunktet Add/OWIN Startup Class. Som vist nedenfor:
Opprett en ny Startup.cs-fil i prosjektets rotmappe.
4: KonfigurasjonDatabaseforbindelsesstreng, SQL Server 2012-versjonen jeg bruker her, konfigurasjonen i web.config er som følger:
5: Konfigurer Hangfire-dashbordet til å få tilgang til filteret, lag et nyttHangfireAuthorizationFilter.csFil.
Som standard er kun lokal tilgang til Hangfire-dashbordet tillatt. Dashbordautorisasjon må konfigureres for å tillate fjernaksess.
6: Konfigurer Startup.cs-klassen, koden er som følger:
7: Start et nettsideprosjekt
Kjør applikasjonen F5 ved å trykke på debug-modus (dette krever at du ser på utdataene til Debug.WriteLine-metoden). Sjekk deretter følgende melding i utdata-vinduet for å se om bakgrunnsbehandlingen har startet vellykket.
Samtidig har databasen også 11 flere tabeller for å sikre at alle oppgaver kan utføres normalt, og at oppgavene ikke vil gå tapt under IIS-gjenoppretting eller prosessomstart, som vist i figuren under:
http://<your-web-app>/hangfire Besøk Dashboard UI-URL-en for å se gjengivelsen øverst i artikkelen.
Tilknyttet bruk
Fire-and-forget (publiser/abonner)
Dette er hovedtypen bakgrunnsoppgave som den vedvarende meldingskøen håndterer. Når du oppretter en publish/subscribe-oppgave, lagres oppgaven i standardkøen (standardkøen er "Default", men flere køer støttes). Flere dedikerte arbeidere lytter til denne køen og henter oppgaver fra den og fullfører oppgaver.
Forsinkelse
Hvis du vil utsette utførelsen av visse oppgaver, kan du bruke følgende oppgaver. Etter en gitt forsinkelsestid blir oppgaven satt i kø og utført som en publish/subscribe-oppgave.
Loop
For å kalle metoden etter periodisitet (timer, dager osv.), bruk klassen RecurringJob. I komplekse scenarioer kan du bruke CRON-uttrykk for å spesifisere et planlagt tidspunkt for å behandle oppgaver.
Kontinuerlig
Kontinuitet lar deg definere komplekse arbeidsflyter ved å koble flere bakgrunnsoppgaver sammen.
Offisiell dokumentasjonslenke:Innloggingen med hyperkoblingen er synlig.
(Slutt)
|