Подтвердить что ты не робот

Windows Service vs Windows Application - лучшая практика

Когда мне следует обратиться за службой Windows, и когда мне следует использовать "фоновое приложение", которое выполняется в области уведомлений?

Если я не ошибаюсь, мое дизайнерское решение будет, любое приложение, которое должно быть запущено до того, как пользователь войдет в систему на компьютере, должен быть сервисом. Для всего остального используйте фоновое приложение. Правильно ли мое решение?

Кроме того, если мне нужны "привилегии администратора" для моего фонового приложения, я бы эскалации использовал манифест. Есть ли еще какое-то конкретное преимущество работы в качестве службы?

4b9b3361

Ответ 1

Мои общие правила:

  • Если он всегда должен запускаться, это служба.
  • Если он должен запускаться под определенной учетной записью пользователя, Network Service, Local System, обычно это служба (или приложение COM +)
  • Если пользователю нужен некоторый контроль над ним, он обычно является областью области уведомлений.
  • Если ему нужно уведомить пользователя о чем-то, это приложение области уведомлений

Веселье приходит, когда вам нужно что-то запускать как системную учетную запись, но также взаимодействовать с ней. IIS - хороший пример этого, это служба, но администрация - это приложение - она ​​должна запускаться при запуске, ей нужен доступ к определенным вещам, которые пользователь не может нормально использовать (c:\inetpub), но пользователь должен иметь возможность запускать, останавливать и настраивать его.

Ответ 2

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

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

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

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

Ответ 3

Я считаю, что ваше решение почти правильно, однако я бы добавил еще одно условие. Возьмем, к примеру, службу mysqld (у вас есть выбор в этом случае, но большинство людей запускают ее как службу). Он работал как служба, потому что вы хотите получить доступ к службе в любое время через потенциально несколько приложений. Очень важно, чтобы оно реагировало на все приложения, вызывающие его, и само по себе, не так много, кроме ожидания ожидания других приложений.

Просто я бы тоже подумал, приняв мое решение.