Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 6049|Відповідь: 4

[Джерело] ASP.NET Core (дев'ятнадцять) використовує Background Service для виконання фонових завдань

[Копіювати посилання]
Опубліковано 2023-5-20 22:51:51 | | | |
Вимоги: У проєкті визначено статичну чергу журналу, і кожен запит може подавати повідомлення в чергу, а також потрібно, щоб сайт відкривав фонове завдання для обробки повідомлень у цій черзі.

Огляд:

Сервіс на основі .NET Core на Linux
https://www.itsvse.com/thread-9447-1-1.html
Інтерфейс IHostedService

Інтерфейс IHostedService визначає два методи для хостованих об'єктів:

StartAsync(CancellationToken): Логіка, що використовується для запуску фонових завдань.
StopAsync(CancellationToken): Активується, коли хост виконує звичайне вимкнення, що містить логіку для завершення фонових завдань.

ПередумовиБазовий клас служби

BackgroundService — це базовий клас, який використовується для реалізації довготривалого IHostedService, адреси вихідного коду:Вхід за гіперпосиланням видно.



Викликайте ExecuteAsync(CancellationToken) для запуску фонової служби. Реалізація повертає завдання, яке відображає весь час життя фонової служби. Жодні інші сервіси не запускаються, поки ExecuteAsync не стане асинхронним, наприклад, викликом await. Уникайте виконання довгих завдань блокування ініціалізації в ExecuteAsync. StopAsync(CancellationToken) чекає завершення ExecuteAsync.

Ми реалізуємо фонове завдання для друкування журналу в циклі, код виглядає так:

Зареєструйтеся в сервісі з таким кодом:

Режим реєстрації — це синглтон, як показано на рисунку нижче:



Почніть проєкт з наступного результату:



Використовуйте сервіс з обмеженням у фоновому завданні

Щоб використовувати сервіс з обмеженням у BackgroundService, створіть область об'єкта. За замовчуванням для керованих сервісів не створюються сфери об'єктів. Якщо ви використовуєте конструктор безпосередньо для інжекції об'єкта з об'єктом, помилка наступна:

Невирішений виняток. System.AggregateException: Деякі сервіси неможливо побудувати (Помилка при перевірці дескриптора сервісу 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Термін життя: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService': Не може використовувати scoped service '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 (чотирнадцять) базується на капчі зображень 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 (дванадцять) фронтенд 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 Детальне пояснення проміжного програмного забезпечення Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Детальне пояснення основного проміжного програмного забезпечення
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET яма стандартних параметрів інтерфейсу Swagger у Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Глибокий аналіз вихідного коду фреймворку
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI вручну отримує метод інжекції об'єктів
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (п'ять) базується на розподілених транзакціях CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Фільтр Core(4) уніфікована валідація моделі ModelState
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 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com