Поделиться через


Размещение в приложении службы Windows

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

Приложения, содержащие длительно исполняемые службы Windows Communication Foundation (WCF), используют многие характеристики совместно со службами Windows. В частности, службы WCF — это длительно исполняемые серверные файлы, которые непосредственно не взаимодействуют с пользователем и, следовательно, не реализуют никакой формы пользовательского интерфейса. По существу размещение служб WCF в приложениях служб Windows является одной из возможностей создания надежных, длительно работающих приложений WCF.

Перед разработчиками WCF часто встает вопрос, где разместить свое приложение WCF — в приложении службы Windows или в среде размещения IIS или службы активации Windows. Рассмотреть возможность использования приложений служб Windows необходимо в следующих случаях.

  • Приложение требует явной активации. Например, службы Windows следует использовать, когда приложение должно запускаться автоматически при запуске сервера, а не динамически при поступлении первого входящего сообщения.

  • Процесс, в котором размещается приложение, после запуска должен оставаться работающим. После запуска процесс службы Windows остается работающим, если явно не завершается администратором сервера с помощью диспетчера служб. Приложения, размещенные в IIS или службе активации Windows, могут запускаться и останавливаться динамически для обеспечения оптимального использования системных ресурсов. Приложения, для которых требуется явное управление в течение времени существования их процесса размещения, должны использовать службы Windows, а не IIS или службу активации Windows.

  • Служба WCF должна работать на сервере Windows Server 2003 и использовать транспорт, отличный от HTTP. В Windows Server 2003 среда размещения IIS 6,0 ограничена связью только по протоколу HTTP. Приложения служб Windows не подвержены такому ограничению и могут использовать любой транспорт, поддерживаемый системой WCF, включая net.tcp, net.pipe и net.msmq.

Размещение WCF в приложении службы Windows

  1. Создайте приложение службы Windows. Приложения служб Windows можно создавать в управляемом коде, используя классы в пространстве имен System.ServiceProcess. Это приложение должно включать один класс, наследуемый от ServiceBase.

  2. Свяжите время существования служб WCF с временем существования приложения службы Windows. Как правило, требуется, чтобы службы WCF, размещенные в приложении службы Windows, становились активными при запуске службы размещения, прекращали прослушивание сообщений при останове службы размещения и завершали процесс размещения, если служба WCF обнаруживает ошибку. Это можно обеспечить, выполнив следующие действия.

    • Переопределите OnStart, чтобы открыть один или несколько экземпляров ServiceHost. В одном приложении службы Windows может размещаться несколько служб WCF, которые запускаются и останавливаются вместе.

    • Переопределите OnStop, чтобы вызвать Closed для любых работающих служб WCF приложения ServiceHost, которые были запущены в течение OnStart.

    • Подпишитесь на событие Faulted приложения ServiceHost и используйте класс ServiceController, чтобы завершить работу приложения службы Windows в случае ошибки.

    Приложения служб Windows, в которых размещаются службы WCF, развертываются и управляются так же, как приложения служб Windows, не использующие WCF.

См. также

Задачи

Как разместить службу WCF в управляемой службе Windows
Узел службы Windows

Справочник

System.ServiceProcess

Другие ресурсы

Пошаговое руководство. Создание служебного приложения Windows в конструкторе компонентов
Программная архитектура служебных приложений
Функции размещения Windows Server App Fabric