#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
Я новичок в этом, но у меня есть вопрос: каков наилучший способ запустить функцию / процесс в фоновом режиме в C # ASP.NET MVC?
Для контекста я создаю веб-сайт для проекта, который выполняет мониторинг через snmp. Дело в том, что различные предупреждения имеют разные тайм-ауты между ними. Я хочу просмотреть все предупреждения и посмотреть, прошло ли время между последней проверкой и now. Если это так, программа выполнит другой мониторинг для этого предупреждения. Предполагается, что он должен выполняться в фоновом режиме, поэтому он не влияет на остальную часть сайта.
Кто-нибудь может мне помочь?
Заранее спасибо ^^
Комментарии:
1. Используйте ОС для запуска программы (вашего процесса) по расписанию. Это было бы совершенно отдельно и полностью не зависело бы от процесса веб-сайта.
Ответ №1:
Ознакомьтесь с этой замечательной статьей здесь:https://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
TLDR: у вас есть встроенные и сторонние опции.
- Встроенный не такой отточенный и с таким количеством предложений, как, например, hangfire
- Встроенный пытается задержать переработку пула приложений для завершения задания.
- Hangfire имеет хорошую связь с redis и другими параметрами сохранения
Оба варианта не подходят для длительных заданий, особенно дольше, чем период перезапуска пула приложений.
Оба нуждаются в некотором механизме восстановления в случае, если задача внезапно прерывается.
Вы можете создать приложение, работающее в планировщике, службе Windows или задании cron Linux, или даже попробовать что-то в облаке в качестве веб-заданий. Они не связаны с жизненными циклами iis и не имеют ни одного из недостатков, упомянутых выше.