Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 6049|Răspunde: 4

[Sursă] ASP.NET Core (nouăsprezece) folosește BackgroundService pentru a rula sarcini în fundal

[Copiază linkul]
Postat la 20-05-2023 22:51:51 | | | |
Cerințe: În proiect este definită o coadă statică de jurnal, iar fiecare cerere poate introduce mesaje în coadă, iar noi avem nevoie ca site-ul să deschidă o sarcină în fundal pentru a procesa mesajele din această coadă.

Recenzie:

Un serviciu bazat pe .NET Core pe Linux
https://www.itsvse.com/thread-9447-1-1.html
Interfața IHostedService

Interfața IHostedService definește două metode pentru obiectele găzduite:

StartAsync(CancellationToken): Logica folosită pentru a începe sarcinile de fundal.
StopAsync(CancellationToken): Declanșat când gazda efectuează o oprire normală, conținând logica pentru a încheia sarcinile de fundal.

BackgroundClasa de bază a serviciului

BackgroundService este clasa de bază folosită pentru a implementa IHostedService de lungă durată, adresa codului sursă:Autentificarea cu hyperlink este vizibilă.



Sună ExecuteAsync(CancellationToken) pentru a rula serviciul în fundal. Implementarea returnează o Sarcină care reprezintă întreaga durată de viață a serviciului în fundal. Niciun alt serviciu nu este pornit până când ExecuteAsync nu devine asincron, cum ar fi prin apelarea await. Evitați efectuarea sarcinilor lungi de inițializare blocantă în ExecuteAsync. StopAsync (CancellationToken) așteaptă finalizarea ExecuteAsync.

Implementăm o sarcină de fundal pentru a tipări jurnalul într-o buclă, codul fiind următorul:

Înregistrați-vă în serviciul de serviciu cu următorul cod:

Modul de înregistrare este singleton, așa cum se vede în figura de mai jos:



Începe proiectul cu rezultatul după cum urmează:



Folosește un serviciu cu scop într-o sarcină în fundal

Pentru a folosi un serviciu cu scop în BackgroundService, creați un scope. În mod implicit, nu se creează scopuri pentru serviciile gestionate. Dacă folosești un constructor direct pentru a injecta un obiect cu scop, eroarea este următoarea:

Excepție nerezolvată. System.AggregateException: Unele servicii nu pot fi construite (Eroare la validarea descriptorului serviciului 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Durată de viață: Singleton ImplementareTip: WebApplication2.Worker.TestServiceHostedService': Nu se poate consuma serviciul cu scop 'WebApplication2.Worker.User' din singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Trebuie să modificăm codul astfel:

Referință:Autentificarea cu hyperlink este vizibilă.

(Sfârșit)





Precedent:OData – OData vs GraphQL
Următor:LiteDB Embedded Database pentru tutorialul .NET
 Proprietarul| Postat la 20-05-2023 22:52:45 |


recenzie

ASP.NET Nucleu (18) Personalizează un cache simplu de ieșire OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integrează analiza performanței aplicațiilor MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Nucleu (16) Dependent de injectarea serviciilor dinamice de înregistrare
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) folosește HttpClient pentru a trimite cereri HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (paisprezece) se bazează pe captcha-ul imaginii SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) pentru a determina dacă este o cerere Ajax sau nu
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (douăsprezece) front-end JS, bundling și compresie CSS
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET ruta Core (XI) pentru endpoint adaugă middleware pentru a afișa toate serviciile DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explicație detaliată a priorităților de configurare în Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explicație detaliată a middleware-ului Middleware din Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Explicație detaliată a Middleware-ului de bază
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET prăpastie a parametrilor impliciti ai interfeței Swagger în Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analiză aprofundată a codului sursă al framework-ului
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obține manual metoda de injectare a obiectelor
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinci) se bazează pe tranzacții distribuite CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtrul Core(4) validare unificată a modelului ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crearea dinamică a instanțelor folosind ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Nucleu (2) Repornește aplicația prin cod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) folosește cache Redis
https://www.itsvse.com/thread-9393-1-1.html
 Proprietarul| Postat la 2023-5-29 20:29:45 |
Poți înlocui IServiceProvider cu IServiceScopeFactory și nu există nicio diferență între cele două la crearea CreateScope.
 Proprietarul| Postat la 2023-8-2023 19:13:00 |
Este folosit un nou cronometru în .NET 6, PeriodicTimer,
https://www.itsvse.com/thread-10637-1-1.html
 Proprietarul| Postat pe 2023-8-13 20:13:37 |
StartAsync ar trebui să fie limitat laMisiuni pe termen scurt, pentru că serviciul de găzduire esteAlergați în ordinescopNiciun alt serviciu nu este pornit până când StartAsync nu rulează completSarcinile pe termen lung ar trebui plasate în ExecuteAsync

Referință:Autentificarea cu hyperlink este vizibilă.

Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com