it-swarm.com.ru

Quartz.NET против запланированных задач Windows. Насколько они отличаются?

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

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

ТИА,

24
Serge Wautier

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

  1. Код для написания - Вы можете выразить свои намерения на языке .NET, написать модульные тесты и отладить логику
  2. Интеграция с журналом событий, у вас есть Common.Logging, что позволяет писать даже в БД.
  3. Надежный и надежный тоже
  4. Еще богаче API

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

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

20
Marko Lahma

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

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

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

15
stephbu

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

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

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

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

2
hurcane

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

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

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

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

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

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

0
InteXX