#asp.net #asp.net-core #iis #asp.net-core-mvc #long-running-processes
Вопрос:
Мы разрабатываем веб-приложение с использованием ASP.NET Ядро MVC размещено внутри IIS, которые реализуют некоторые бизнес-сценарии для CRM. Но у нас есть пара фоновых заданий и длительных заданий для синхронизации с внешними системами. Поэтому я не уверен, подходят ли эти фоновые задания и запланированные задания для выполнения внутри нашей ASP.NET Основное веб-приложение MVC, размещенное внутри IIS?
Теперь, когда мы разрабатывали «Классику» ASP.NET MVC (до ASP.NET Core MVC), нам всегда говорили, что такие веб-проекты не предназначены для выполнения длительных задач и/или запланированных задач, где консольные приложения лучше всего подходят для этих типов задач. Например, IIS перейдет в спящий режим, поэтому фоновые задания могут не быть запущены в нужное время, если никто не использует веб-приложение если мы запускаем длительные задачи внутри IIS, они могут быть отключены до завершения задач.
Так что вышеуказанный случай все еще действителен внутри ASP.NET Основные веб-проекты MVC? или в ASP.NET Ядро подходит для выполнения запланированных и/или длительных задач?
Спасибо
Комментарии:
1. Не подходит. Они по-прежнему работают в пуле приложений IIS, который подлежит переработке, и совместно используют процессор и оперативную память с вашим сайтом. Создание службы Windows, в которой размещаются наследники IHostedService, похоже на пять строк кода.
2. Это широко обсуждалось в тоннах тем, и если ваш проект не требует слишком большой надежности при выполнении этих задач, вы можете пойти по этому пути, blog.lextudio.com/unpleasant-facts-about-hangfire-632a3228ff8a
3. @CodeCaster спасибо за ответ .. или я могу использовать консольное приложение, которое запускается по расписанию с помощью планировщика задач Windows вместо использования службы Windows, это также допустимый вариант ?
4. Да, настройте автономную программу и утилиту. Он может запускаться планировщиком задач сервера каждые 1 час или так часто, или даже настраиваться для запуска при запуске сервера. Однако, если процесс остановится, как вы начнете заново? Поэтому, как уже отмечалось, лучше создать удобную для сервера программу, которая на 100% отделена от веб-сайта. И такие программы даже позволяют вам подписываться, скажем, на события папок (кто — то — или даже ваш веб-сайт может сохранить какой-то бизнес-документ-триггеры для обработки файлов в этой папке хорошо работают с отдельной программой для выполнения подобных действий. Так что да, создайте отдельную программу
5. Я думаю, что это не подходит. Если при выполнении запланированного задания возникают проблемы с разрешениями, вам также необходимо настроить идентификатор приложения или пула приложений. Если это строго авторизованная личность, могут возникнуть проблемы с безопасностью. Во-вторых, восстановление и заполнение пула приложений производительностью. Утилизация, вызванная высокой нагрузкой на процессор или память, может привести к пропуску запланированного времени выполнения задания.