В чем преимущество разработки приложения как службы Windows?

Я собираюсь разработать приложение, которое будет обрабатывать онлайн-данные (поступающие через сокет), и оно не требует взаимодействия с пользователем.

Я думаю о простом консольном приложении, но как насчет службы Windows, дает ли она дополнительные преимущества? (Я знаю, что службе Windows не нужен вход в систему для запуска службы, но я спрашиваю о дополнительных преимуществах)


person Ahmed Said    schedule 14.01.2009    source источник


Ответы (4)


На макушке:

  • Вы можете контролировать пользователя (и права, связанные с этой учетной записью), который запускает процесс.
  • Автоматически запускаемый процесс означает, что рабочий стол должен быть включен, а пользователь не вошел в систему, чтобы служба могла работать.
  • может быть определена политика на случай сбоя (попробуйте перезапустить n раз, запустите определенную программу, если не удалось)
  • может быть определена зависимость (если вы зависите от других сервисов)
  • вы можете заключить свой скрипт в невидимые окна
  • вы можете легко запустить / остановить / перезапустить скрипт (net start <scriptname>)
person VonC    schedule 14.01.2009

Я не могу ничего добавить в список VonC, но я бы добавил, что если вы используете обычные инструменты Microsoft (VS и .net), легко сделать и то, и другое.

Я создаю библиотеку классов, которая содержит всю логику моего приложения, и класс MyServer, который имеет методы .Start () и .Stop (). Затем вы можете создать как консольное приложение, так и приложение winservice, которые ссылаются на это. Например. консольное приложение создает экземпляр нового MyServer, вызывает Start, ожидает нажатия клавиши и вызывает Stop.

Я использую консольное приложение во время разработки и службу Windows для развертывания.

person codybartfast    schedule 14.01.2009
comment
Это здорово, но я собираюсь разработать его на C ++ (приложение win32). - person Ahmed Said; 14.01.2009

  1. Вы можете управлять сервисом с другой машины (запуск / остановка)
  2. Поскольку службы записывают в журнал событий, вы также можете отслеживать службу с другого компьютера (хотя ничто не мешает вам делать это из обычного приложения)
  3. Никто не должен входить в систему для запуска службы
person Rad    schedule 14.01.2009

На самом деле, я думаю, это действительно зависит от использования вашего приложения.

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

Служба Windows будет действительно интересна, если ваш процесс должен работать непрерывно и тихо (без взаимодействия с пользователем).

Вы также можете рассмотреть возможность планирования задач в Windows. По сути, он будет запускать ваше приложение (например, через файл .bat) в определенное время. Это может быть полезно, если ваше приложение нужно запускать каждый день в 02:00, например ... В «Панели управления» у вас есть опция «Запланированные задачи». Затем вы нажимаете «Добавить запланированную задачу» и следуете указаниям мастера ...

person Romain Linsolas    schedule 14.01.2009