Quartz.NET против запланированных задач Windows.Насколько они отличаются? - PullRequest
26 голосов
/ 25 февраля 2011

Мне нужно сравнение между Quartz.NET и запланированными задачами Windows?

Насколько они различны?Каковы плюсы и минусы каждого?Как выбрать, какой использовать?

TIA,

Ответы [ 4 ]

22 голосов
/ 26 февраля 2011

С Quartz.NET я мог бы сопоставить некоторые из предыдущих пунктов:

  1. Код для записи - Вы можете выразить свое намерение на языке .NET, написать модульные тесты и отладить логику
  2. Интеграция с журналом событий, у вас есть Common.Logging, который позволяет записывать даже в дБВ основном вопрос о том, что вам нужно.Запланированные задачи Windows могут дать вам все, что вам нужно.Но если вам нужна кластеризация (распределенные работники), детальный контроль над правилами запуска или пропуска зажигания, вы можете проверить, что Quartz.NET может предложить в этих областях.

    Возьмите простейшее, отвечающее вашим требованиям, но достаточно абстрактные, чтобы позволить изменения.

16 голосов
/ 25 февраля 2011

Моя внутренняя реакция - попытаться заставить встроенный WinScheduler работать с вашими потребностями, прежде чем устанавливать еще один планировщик - рассуждения:

  1. установка не требуется - по умолчанию установлена ​​и включена
  2. нет кода для записи - задания выражаются в виде метаданных
  3. интеграция с журналом событий и т. Д.
  4. Надежный и надежный - достаточно для MSFT, Google и т. Д.
  5. достаточно богатый API - создание рабочих мест, проверка статуса и т. Д.
  6. интегрировано с инструментами удаленного управления
  7. интеграция безопасности - запускать задания с разными учетными данными
  8. инструмент для мониторинга

Тогда доберитесь до Кварца, если он не соответствует вашим потребностям. Кварц, безусловно, обладает многими из этих функций, но не стоит добавлять еще одну услугу, которой вы можете владеть и управлять.

2 голосов
/ 06 октября 2016

Для меня одним важным отличием, которое не включено в другие ответы, является то, что выполняется планировщиком.

Планировщик заданий Windows может запускать только исполняемые программы и сценарии. Код, написанный для использования в Quartz, может напрямую взаимодействовать с компонентами .NET вашего проекта.

В планировщике заданий вам нужно написать исполняемый файл или скрипт оболочки. Внутри этой оболочки вы можете взаимодействовать с компонентами вашего проекта. Хотя написание этого шелл-кода не является сложным процессом, вам необходимо рассмотреть возможность развертывания дополнительных файлов.

Если вы ожидаете добавить больше запланированных задач в течение срока действия проекта, вам может потребоваться создать дополнительные исполняемые оболочки или файлы сценариев, что требует обновления процесса развертывания. С Quartz вам не нужны эти файлы, что снижает общие усилия, необходимые для создания и развертывания дополнительных задач.

0 голосов
/ 23 января 2018

К сожалению, сборки заданий Quartz.NET не могут быть обновлены без перезапуска процесса / хоста / службы. Это довольно большой вариант для некоторых людей (включая меня).

Вполне возможно построить каркас для заданий, запущенных под планировщиком заданий. Сборки на основе MEF могут вызываться одним консольным приложением, а все управление осуществляется через пользовательский интерфейс конфигурации. Вот популярная управляемая оболочка:

Мне понравилось мое короткое время работы с Quart.NET, но требование перезагрузки было слишком большой проблемой, чтобы ее преодолеть. За эти годы Марко проделал огромную работу с 1013, и он всегда был полезным и отзывчивым. Возможно, когда-нибудь проект получит множественную поддержку AppDomain, что бы решить эту проблему. (Тем не менее, это обещает быть много работы. Слава ему и его вкладчикам, если они решат взять его на себя.)

Перефразируя Марко, если вам нужно:

  1. Кластеризация (распределенные работники)
  2. Детальный контроль над правилами срабатывания или пропуска зажигания

... тогда Quartz.NET будет вашим требованием.

...