Hangfire працює з більшістю платформ .NET:.NET Framework 4.5 або новіші версії, .NET Core 1.0 або новіші, все, що стосується . Платформа, сумісна з NET Standard 1.3. Ви можете інтегрувати його майже з будь-яким фреймворком застосунків, включно з ASP.NET, ASP.NET Core, консольними додатками, Windows-сервісами, WCF та драйверами спільноти, такими як Nancy чи ServiceStack.
Застосовні сценарії:Фон надсилає лист асинхронно і якнайшвидше повертає відповідь користувачу. Заплановане виконання завдань, циклічне виконання завдань, асинхронне виконання трудомістких завдань, виконання завдання A, а потім виконання завдань B, а також пакетне виконання завдань. Як я це робив раніше:
Ви можете встановити фонову обробку ASP.NET додатку без використання інших процесів, наприклад, сервісів Windows. Код Hangfire готовий до розгортанняНесподіване завершення процесу, переробка пулу додатків і перезапуск。 Через використанняПостійне зберігання, звідси тиЖодна робота з бекграунду не втрачається。
По-перше, зображення такі:
Зображення вище — це панель Hangfire Dashboard, яка дуже корисна і дозволяє перевіряти статус фонових завдань, а також дуже крута, тому її потрібно налаштовувати.
Інтерфейс панелі приладів вимагає класу для запуску, лише якщо виПри налаштуванні Hangfire за допомогою класу Startup,Інтерфейс панелі керуванняЙого можна використовувати。
Спочатку я не налаштовував дашборд Hangfire Dashboard і отримав таку помилку:
Наступні помилки виникли під час спроби завантажити додаток. - Не знайдено асемблер, що містить атрибут OwinStartup. - Не знайдено асемблер, що містить Startup або [AssemblName]. Стартап-клас. Щоб вимкнути OWIN launch discovery, додайте appSetting owin:AutomaticAppStartup зі значенням "false" у вашій web.config. Щоб визначити асемблер, клас або метод для OWIN startup, додайте appSetting owin:AppStartup з повністю кваліфікованим класом запуску або назвою методу конфігурації у вашому web.config.
Рішення:
При використанні ініціалізації на основі Global.asax.cs також може знадобитися вимкнути виявлення класів запуску в OWIN.
Переходимо до суті, починається навчальний матеріал:
1: Структура має відповідати потребам підпалового вогню,Мій проєкт — .net 4.6.2, Отже, ви можете встановити Hangfire звичайним способом, проєкти .NET 4.0 не потребують спроб, не підтримуються!
2: Команда nuget виглядає так:
3: Клас запуску OWIN розроблений для збереження логіки завантаження веб-додатків в одному місці. У Visual Studio 2013 ви можете додати його, клацнувши правою кнопкою миші по проєкту та вибравши пункт меню Add/OWIN Startup Class. Як показано нижче:
Створіть новий Startup.cs файл у кореневій директорії проєкту.
4: КонфігураціяРядок підключення бази даних, версія SQL Server 2012, яку я використовую тут, конфігурація у web.config така:
5: Налаштуйте панель керування Hangfire для доступу до фільтра, створіть новийHangfireAuthorizationFilter.csФайл.
За замовчуванням дозволений лише локальний доступ до панелі Hangfire. Авторизація панелі керування має бути налаштована для дозволу віддаленого доступу.
6: Налаштуйте клас Startup.cs, код виглядає так:
7: Початок проєкту вебсайту
Запустіть додаток F5, натиснувши режим налагодження (це вимагає перегляду результатів методу Debug.WriteLine). Потім перевірте наступне повідомлення у виводному вікні, щоб побачити, чи успішно розпочалася фонова обробка.
Водночас база даних має ще 11 таблиць, щоб гарантувати, що всі завдання можуть виконувати нормально, а завдання не будуть втрачені під час рекультивації IIS або перезапуску процесу, як показано на рисунку нижче:
http://<your-web-app>/hangfire Відвідайте URL інтерфейсу Dashboard, щоб побачити рендеринг у верхній частині статті.
Додане використання
Вогонь і забути (опублікувати/підписатися)
Це основний тип фонового завдання, яке виконує постійна черга повідомлень. Коли ви створюєте завдання публікації/підписки, завдання зберігається у стандартній черзі (стандартна черга — «Default», але підтримується кілька черг). Кілька спеціалізованих працівників слухають цю чергу, отримують завдання з неї та виконують завдання.
Затримка
Якщо ви хочете затримати виконання певних завдань, можете скористатися наступними завданнями. Після певного часу затримки завдання ставиться в чергу і виконується як завдання публікації/підписки.
Петля
Щоб викликати метод за періодичністю (години, дні тощо), використовуйте клас RecurringJob. У складних ситуаціях можна використовувати вирази CRON, щоб вказати запланований час обробки завдань.
Безперервний
Безперервність дозволяє визначати складні робочі процеси, пов'язуючи кілька фонових завдань разом.
Офіційне посилання на документацію:Вхід за гіперпосиланням видно.
(Кінець)
|