В чем выгода разработки приложения как службы Windows? - PullRequest
20 голосов
/ 14 января 2009

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

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

Ответы [ 4 ]

19 голосов
/ 14 января 2009

На моей голове:

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

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

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...