Запустите функцию / процесс в фоновом режиме в C # asp.net mvc

#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 и не имеют ни одного из недостатков, упомянутых выше.