Плюсы и минусы работы встроенного Quartz.NET или службы Windows
Я хочу добавить планирование кварца в приложение ASP.NET.
Он будет использоваться для отправки почтовых сообщений в очереди.
Каковы преимущества и недостатки работы quartz.net в качестве службы windows vs embedded.
Моя основная проблема заключается в том, как Quartz.NET во встроенном режиме обрабатывает переменное число рабочих процессов в IIS.
Ответы
Ответ 1
Вот некоторые вещи, которые вы можете рассмотреть, решив, следует ли запускать встроенные или нет:
-
Если вы собираетесь создавать задания ТОЛЬКО изнутри хостингового приложения, тогда запустите embedded. В противном случае запустите службу.
-
Если вашим заданиям могут потребоваться разрешения, отличные от разрешений, которые имеет веб-приложение, выполните их как службу.
-
Если ваши задания - это длинные рабочие задания или задания, которые используют большую память, выполняются как службы.
-
Если вам нужно выполнить задания в кластерной среде для производительности, масштабируемости или отказоустойчивости, запустите как службу.
Из приведенных выше пунктов вы можете сделать вывод, что мое предпочтение заключается в том, чтобы запустить его как службу. Это связано с тем, что если вы столкнулись с проблемой настройки планировщика заданий, это означает, что у вас есть задания, которые нужно запускать по расписанию или длительные рабочие задания. Обычно это лучший выбор для такого рода работ.
Ответ 2
Quartz.NET может создаваться на основе каждого приложения (настройка веб-фермы задает количество планировщиков). Вы можете безопасно запускать несколько планировщиков, если у вас есть задания, поддерживаемые в базе данных, и у вас есть Quartz.NET, настроенный в кластерном режиме (и синхронизация синхронизируется естественно).
Основная проблема заключается в обработке пула приложений до IIS 7.5. Без постоянных проверок ваш работник приложения может перерабатываться и ваш планировщик будет недоступен, пока кто-то не выдает веб-запрос, чтобы снова запустить пул приложений. В IIS 7.5 появилась новая функция, позволяющая поддерживать пулы приложений все время.
В противном случае между двумя моделями не должно быть большой разницы.