Плюсы и минусы работы встроенного 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 появилась новая функция, позволяющая поддерживать пулы приложений все время.

В противном случае между двумя моделями не должно быть большой разницы.