Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 6049|Απάντηση: 4

[Πηγή] Το ASP.NET Core (δεκαεννέα) χρησιμοποιεί το BackgroundService για την εκτέλεση εργασιών στο παρασκήνιο

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2023-5-20 22:51:51 | | | |
Απαιτήσεις: Στο έργο ορίζεται μια ουρά στατικού αρχείου καταγραφής και κάθε αίτημα μπορεί να τοποθετήσει μηνύματα στην ουρά και χρειαζόμαστε τον ιστότοπο να ανοίξει μια εργασία παρασκηνίου για την επεξεργασία των μηνυμάτων σε αυτήν την ουρά.

Αναθεώρηση:

Μια υπηρεσία που βασίζεται στο .NET Core σε Linux
https://www.itsvse.com/thread-9447-1-1.html
Διεπαφή IHostedService

Η διεπαφή IHostedService ορίζει δύο μεθόδους για φιλοξενούμενα αντικείμενα:

ΈναρξηAsync(CancellationToken): Η λογική που χρησιμοποιείται για την έναρξη εργασιών παρασκηνίου.
Σταματήστε το Async(CancellationToken): Ενεργοποιείται όταν ο κεντρικός υπολογιστής εκτελεί έναν κανονικό τερματισμό λειτουργίας, που περιέχει τη λογική για τον τερματισμό των εργασιών παρασκηνίου.

ΙστορικόΒασική κλάση υπηρεσίας

Το BackgroundService είναι η βασική κλάση που χρησιμοποιείται για την υλοποίηση του μακροχρόνιου IHostedService, της διεύθυνσης πηγαίου κώδικα:Η σύνδεση με υπερσύνδεσμο είναι ορατή.



Καλέστε το ExecuteAsync(CancellationToken) για να εκτελέσετε την υπηρεσία παρασκηνίου. Η υλοποίηση επιστρέφει μια εργασία που αντιπροσωπεύει ολόκληρη τη διάρκεια ζωής της υπηρεσίας παρασκηνίου. Δεν ξεκινούν άλλες υπηρεσίες έως ότου το ExecuteAsync γίνει ασύγχρονο, όπως καλώντας την αναμονή. Αποφύγετε την εκτέλεση μεγάλων εργασιών προετοιμασίας αποκλεισμού στο ExecuteAsync. StopAsync(CancellationToken) σε αναμονή για την ολοκλήρωση του ExecuteAsync.

Υλοποιούμε μια εργασία παρασκηνίου για να εκτυπώσουμε το αρχείο καταγραφής σε βρόχο, ο κώδικας έχει ως εξής:

Εγγραφείτε στην υπηρεσία με τον ακόλουθο κωδικό:

Ο τρόπος εγγραφής είναι μονότονος, όπως φαίνεται στο παρακάτω σχήμα:



Ξεκινήστε το έργο με το αποτέλεσμα ως εξής:



Χρήση υπηρεσίας εμβέλειας σε μια εργασία παρασκηνίου

Για να χρησιμοποιήσετε μια υπηρεσία εμβέλειας στο BackgroundService, δημιουργήστε μια εμβέλεια. Από προεπιλογή, δεν δημιουργούνται εύρη για διαχειριζόμενες υπηρεσίες. Εάν χρησιμοποιείτε έναν κατασκευαστή απευθείας για να εισάγετε ένα αντικείμενο εμβέλειας, το σφάλμα είναι το εξής:

Ανεπίλυτη εξαίρεση. System.AggregateException: Δεν είναι δυνατή η κατασκευή ορισμένων υπηρεσιών (Σφάλμα κατά την επικύρωση της περιγραφής υπηρεσίας 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Διάρκεια ζωής: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService': Δεν είναι δυνατή η κατανάλωση της υπηρεσίας εμβέλειας 'WebApplication2.Worker.User' από singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Πρέπει να τροποποιήσουμε τον κώδικα ως εξής:

Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

(Τέλος)





Προηγούμενος:OData – OData εναντίον GraphQL
Επόμενος:Εκμάθηση ενσωματωμένης βάσης δεδομένων LiteDB για .NET
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-5-20 22:52:45 |


αναθεώρηση

ASP.NET Core (18) Προσαρμόστε μια απλή κρυφή μνήμη εξόδου OutputCache
https://www.itsvse.com/thread-10583-1-1.html

Το ASP.NET Core (17) ενσωματώνει την ανάλυση απόδοσης εφαρμογών MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Πυρήνας (16) Εξαρτάται από την παροχή υπηρεσιών δυναμικής καταχώρισης
https://www.itsvse.com/thread-10560-1-1.html

Το ASP.NET Core (XV) χρησιμοποιεί το HttpClient για την αποστολή αιτημάτων HTTP
https://www.itsvse.com/thread-10311-1-1.html

Το ASP.NET Core (δεκατέσσερα) βασίζεται στο captcha εικόνας SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) για να προσδιορίσετε εάν πρόκειται για αίτημα Ajax ή όχι
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (δώδεκα) front-end JS, ομαδοποίηση CSS και συμπίεση
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET δρομολόγηση τελικού σημείου Core (XI) προσθέτει ενδιάμεσο λογισμικό για την εμφάνιση όλων των υπηρεσιών DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Λεπτομερής επεξήγηση των προτεραιοτήτων διαμόρφωσης στο Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Λεπτομερής επεξήγηση του ενδιάμεσου λογισμικού Middleware του Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Λεπτομερής επεξήγηση του Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET λάκκο των προεπιλεγμένων παραμέτρων του Swagger UI στο Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Πυρήνας (7) Σε βάθος ανάλυση του πηγαίου κώδικα πλαισίου
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Πυρήνας (VI) Το DI λαμβάνει χειροκίνητα τη μέθοδο έγχυσης αντικειμένων
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Ο πυρήνας (πέντε) βασίζεται σε κατανεμημένες συναλλαγές της ΚΓΠ
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Επικύρωση ενοποιημένου μοντέλου ModelState φίλτρου Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Πυρήνας (iii) Δημιουργήστε δυναμικά παρουσίες χρησιμοποιώντας το ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Πυρήνας (2) Επανεκκινήστε την εφαρμογή με κωδικό
https://www.itsvse.com/thread-9480-1-1.html

Το ASP.NET Core (1) χρησιμοποιεί προσωρινή αποθήκευση Redis
https://www.itsvse.com/thread-9393-1-1.html
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-5-29 20:29:45 |
Μπορείτε να αντικαταστήσετε το IServiceProvider με το IServiceScopeFactory και δεν υπάρχει διαφορά μεταξύ των δύο κατά τη δημιουργία του CreateScope.
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-8-2 19:13:00 |
Χρησιμοποιείται ένα νέο χρονόμετρο στο .NET 6, το PeriodicTimer
https://www.itsvse.com/thread-10637-1-1.html
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-8-13 20:13:37 |
Το StartAsync θα πρέπει να περιορίζεται σεΑποστολές μικρής διάρκειας, επειδή η υπηρεσία φιλοξενίας είναιΕκτελέστε με τη σειράστόχοςΔεν ξεκινούν άλλες υπηρεσίες μέχρι να εκτελεστεί πλήρως το StartAsyncΟι μακροπρόθεσμες εργασίες θα πρέπει να τοποθετούνται στο ExecuteAsync

Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com