Служба Windows или планировщик заданий Windows?


10

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

Я вижу два варианта достижения этого в программировании на C # / DotNet.

  • создание службы windows, имеющей таймерный подход внутри нее.
  • консольную программу и планировать ее с помощью планировщика задач Windows.

Какой из них вы предпочитаете и почему?


3
Я думаю, что этот вопрос лучше подходит для SO
Naveen

1
Действительно, это хороший вопрос разработки программного обеспечения, и вы, вероятно, получите как минимум пять хороших ответов через пять часов после того, как зададите его в SO.
Sharp

1
Я проголосовал за закрытие, это на самом деле принадлежит SO
Jaco Pretorius

2
Этот вопрос вызывает субъективную и / или расширенную дискуссию по существу любого из них. Это очень много на тему здесь и субъективна и аргументированный там.

2
Я не уверен, я думаю, что последнее предложение "Какой из них вы предпочитаете и почему?" будет вызывать близких ботов там. Здесь лучше, так как реальные ответы можно получить здесь
TheLQ

Ответы:


2

Комментарии моего коллеги со вчерашнего дня по этой же теме

«В этом вопросе всегда будет разное мнение ... Мое эмпирическое правило было бы, если вам нужно что-то, что выполняется каждые пять минут (и вам все равно, сколько времени это работает или сколько времени занимает бег) или что-то такое, что реагирует на события, пользуйтесь сервисом. Если вам нужно что-то запускать в определенное время каждый день, и вы уверены, что не будет лишнего круга, используйте планировщик, поставляемый с ОС. Если вам нужен гибрид, либо используйте оба решения для различных случаев или найти что-нибудь с полки. (Возможно, Quartz .Net) "

Статья Джона Галлоуэя от 2005 года «// TODONT: использовать службу Windows только для запуска запланированного процесса» является хорошим чтением. Я предлагаю также прочитать комментарии, потому что обсуждение все еще продолжается до сегодняшнего дня и также дает некоторые хорошие контраргументы.

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


4

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

Расписания используются для запуска задачи несколько раз, которые не обязательно требуют дополнительных разрешений.


3

Я слышал аргументы в пользу использования планировщика Windows, но всегда выбирал запись моего приложения в качестве службы. Сначала я подумал, что это будет лучшее решение в кластерной среде, но это не совсем так. Суть в том, что у меня не было веской причины, за исключением того, что это «казалось» лучшим дизайном.


0

почему бы вам не попробовать Quartz.net,
я использовал его один раз, и я могу сказать, что это мощная среда для создания вашего собственного планировщика, и она предоставляет предварительно собранную службу, которая будет запускать запланированные вами задания (хранится в базе данных или просто в файле XML). ) http://quartznet.sourceforge.net/


2
-1 Это вообще не отвечает на вопрос и лучше подойдет как комментарий.
Тамара Вийсман

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.