Размещение в приложении службы 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
Создайте приложение службы Windows. Приложения служб Windows можно создавать в управляемом коде, используя классы в пространстве имен System.ServiceProcess. Это приложение должно включать один класс, наследуемый от ServiceBase.
Свяжите время существования служб 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
Справочник
Другие ресурсы
Пошаговое руководство. Создание служебного приложения Windows в конструкторе компонентов
Программная архитектура служебных приложений
Функции размещения Windows Server App Fabric