В чем преимущество разработки приложения как службы Windows?
Я собираюсь разработать приложение, которое будет обрабатывать онлайн-данные (через сокет) и не требует никакого взаимодействия с пользователем.
Я имею в виду простое консольное приложение, но как насчет службы Windows это дает дополнительную выгоду? (Я знаю, что служба Windows не нуждается во входе пользователя для запуска службы, но я спрашиваю о дополнительной выгоде)
Ответы
Ответ 1
Наверху:
- Вы можете управлять пользователем (и правами, связанными с этой учетной записью пользователя), который запускает процесс
- Автоматически запущенный процесс означает, что рабочий стол должен быть включен, а не зарегистрирован пользователем, для запуска службы
- может быть определена политика сбоя (попробуйте перезапустить n раз запустите определенную программу, если не удалось)
- может быть определена зависимость (если вы зависите от других функций)
- вы можете обернуть свой скрипт в невидимые окна
- вы можете легко запустить/остановить/перезапустить script (
net start <scriptname>
)
Ответ 2
Я ничего не могу добавить в список VonC, но я бы добавил, что если вы используете обычные инструменты Microsoft (VS и .net), то легко сделать то и другое.
Я создаю библиотеку классов, которая содержит всю мою логику приложения и класс MyServer, который имеет методы .Start() и .Stop(). Затем вы можете создать как консольное приложение, так и приложение winservice, которое ссылается на это. Например. консольное приложение создает новый MyServer, вызывает Start, ждет нажатия клавиши и вызывает Stop.
Я использую консольное приложение во время разработки и службу Windows для развертывания.
Ответ 3
- Вы можете управлять услугой с другого компьютера (запуск/останов)
- Поскольку службы записывают в журнал событий, вы также можете контролировать службу с другого компьютера (хотя ничто не мешает вам делать это из обычного приложения)
- Никто не должен войти в систему для запуска службы
Ответ 4
На самом деле, это действительно зависит от использования вашего приложения, я думаю.
Например, если вам нужно только выполнить обработку в определенное время, использование командной строки может быть достаточно.
Служба Windows будет действительно интересна, если ваш процесс должен работать непрерывно и беззвучно (без взаимодействия с пользователем).
Вы также можете рассмотреть планирование задач в Windows. В принципе, он будет запускать ваше приложение (например, через файл .bat) в указанное время. Может быть полезно, если ваше приложение должно запускаться каждый день в 02:00, например...
В "Панели управления" у вас есть опция "Запланированные задания". Затем вы нажимаете "Добавить запланированную задачу" и следуете за мастером...