Служба Windows против планировщика заданий с триггером запуска
Я запускаю настольное приложение в качестве службы с помощью NSSM (Non Sucking Service Manager), который является оболочкой для приложений, которые не предназначены для запуска в качестве службы.
Я использую старый ноутбук с Windows 10 в качестве сервера, запустив несколько приложений в качестве служб Windows. На ноутбуке не зарегистрировано ни одного пользователя, поэтому ему требуется меньше ресурсов, и благодаря службам Windows приложения всегда работают, даже когда Windows устанавливает новые обновления и перезагружается.
Теперь я бы предпочел, чтобы приложения могли запускаться как службы Windows без помощи другого приложения (NSSM), но я знаю, что этого никогда не произойдет. Приложения являются настольными приложениями и никогда не предназначались для запуска в качестве службы; разработчики никогда не улучшат их с помощью такой функции. (Я уже спросил это.)
На самом деле, существует альтернатива запуску приложения в качестве службы, и это будет запуск приложения с помощью планировщика задач с триггером "при запуске Windows".
В обоих случаях пользователю не нужно входить в систему, и компьютер может автоматически перезагружаться, а приложение всегда должно быть доступно в сети. Преимущество планировщика задач состоит в том, что приложение не требует никакой оболочки (NSSM).
Но я не совсем уверен в надежности планировщика заданий. Служба Windows предназначена для запуска приложения 24/7 и имеет множество вариантов восстановления. Планировщик задач предназначен для запуска приложения периодически, а не 24/7; поэтому нет никакой возможности восстановления.
Итак, мой вопрос:
Является ли планировщик заданий с "при запуске Windows" триггером действительной альтернативой службе Windows или нет?
Кто-нибудь имеет опыт работы с обоими методами и может лучше объяснить преимущества и недостатки обоих?
3 ответа
Да, в вашем случае использования это так, однако я понимаю, что обычно планировщик задач ожидает завершения задачи в какой-то момент (и на самом деле имеет опцию по умолчанию для принудительного завершения задачи, если она не заканчивается сама) Вы можете тестировать некоторые неизвестные произвольные или, по крайней мере, непредвиденные ограничения, выполняя его таким образом. Если вы используете запланированную задачу, может быть лучше использовать отдельную запланированную задачу для запуска приложения, а другую - для остановки (и / или перезапуска) приложения. Вы можете запланировать запуск задачи при запуске Windows и запускать другие задачи через удаленное управление.
Одна область, где это не эквивалентно, это сервисные зависимости. Не существует встроенного способа сделать запланированную задачу зависимой от другой, которую можно выполнить, в то время как вы можете это сделать с помощью служб. Другой областью будет регистрация событий. Я подозреваю, что ни один из них не будет полезен в вашем случае использования, потому что многие приложения хранят свои собственные журналы, если это необходимо, и не зависят от запуска других приложений.
У обоих есть варианты восстановления / перезагрузки после сбоя
и оба могут быть настроены для отложенного запуска после запуска.
Изменить приоритет приложения, работающего с планировщиком задач Windows, сложно. Но я не разбираюсь в сервисе.
Я мог бы оставить вам комментарий, потому что Google иногда полезен, но я помню, что давным-давно я хотел достичь того же. В этом случае я использовал набор ресурсов для Windows Server 2003. Он содержал инструмент для создания службы. К сожалению, я не нахожу информацию о том, что я использовал в то время*
,
Тем не менее, поиск Google показывает много результатов:
1) Использование sc.exe
https://support.microsoft.com/en-us/help/251192/how-to-create-a-windows-service-by-using-sc-exe
Вот пример:
C: \ Documents and Settings \ Администратор> sc create asperacentral binPath = "C: \ Program Files \ Aspera \ Enterprise Server \ bin \ Debug \ asperacentral.exe" DisplayName = "Aspera Central" start = auto
2) Использование *svrany
Это инструмент, который я использовал, только что вспомнил. Но сейчас он довольно старый, и я бы не советовал вам его использовать, хотя я думаю, что он все еще работает (с Windows 7 он работает).
3) Использование srvstart.exe
: https://www.rozanski.org.uk/software
Инструмент, который я слышал не так давно, никогда не использовал.
Я уверен, что есть много и много других, но я бы попробовал sc.exe
метода 1.