Службы размещения

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

WCF предоставляет единую модель программирования для создания приложений, ориентированных на обслуживание. Эта модель программирования остается согласованной и не зависит от среды выполнения, в которой развертывается служба. На практике это означает, что код службы всегда выглядит практически одинаково, независимо от вариантов размещения.

Варианты размещения могут самыми различными - от выполнения внутри консольного приложения до серверных сред, таких как службы Windows, выполняемых внутри рабочего процесса, который управляется службами IIS или службой активации Windows (WAS). Разработчики могут выбрать среду размещения, которая соответствует требованиям по развертыванию службы. Эти требования могут определяться платформой, на которой развертывается приложение, транспортом, с помощью которого оно должно отправлять и принимать сообщения, или типом перезапуска процессов и другими механизмами управления процессами, необходимыми для обеспечения нужного уровня доступности службы, а также другими требованиями по управлению и надежности. В следующем разделе приведены сведения и инструкции по применению различных вариантов размещения.

Варианты размещения

Самостоятельное размещение в управляемом приложении

Службы WCF можно размещать в любом управляемом приложении. Это наиболее гибкий вариант, поскольку он почти не требует развертывания инфраструктуры. Код службы внедряется в код управляемого приложения, после чего создается и открывается экземпляр класса ServiceHost , чтобы служба стала доступной. Дополнительные сведения см. в статье "Практическое руководство. Размещение службы WCF в управляемом приложении".

Этот параметр позволяет использовать два распространенных сценария: службы WCF, работающие в консольных приложениях и расширенных клиентских приложениях, таких как windows Presentation Foundation (WPF) или Windows Forms (WinForms). Размещение службы WCF в консольном приложении обычно полезно на этапе разработки приложения. В этом случае приложение легко отлаживать, удобно получать данные трассировки, чтобы узнать, что происходит внутри приложения, и удобно копировать приложение в другие расположения. Этот вариант размещения также упрощает взаимодействие с богатыми клиентскими приложениями, такими как приложения WPF и WinForms, для взаимодействия с внешним миром. Например, клиент совместной работы с одноранговым подключением, использующий WPF для пользовательского интерфейса, а также содержит службу WCF, которая позволяет другим клиентам подключаться к нему и обмениваться информацией.

Управляемые службы Windows

Этот вариант размещения состоит из регистрации домена приложения (AppDomain), на котором размещена служба WCF в качестве управляемой службы Windows (ранее известная как служба NT), чтобы процесс времени существования службы контролировался диспетчером управления службами (SCM) для служб Windows. Как и в случае резидентного размещения, в данном случае код размещения является частью приложения. Служба реализуется как служба Windows, так и как служба WCF, вызывая ее наследование от ServiceBase класса, а также от интерфейса контракта службы WCF. Таким образом, объект ServiceHost создается и открывается с помощью переопределенного метода OnStart(String[]) и закрывается с помощью переопределенного метода OnStop() . Кроме того, необходимо реализовать класс установщика, наследующий классу Installer , чтобы программу можно было устанавливать в качестве службы Windows с помощью средства Installutil.exe. Дополнительные сведения см. в статье "Практическое руководство. Размещение службы WCF в управляемой службе Windows". Сценарий, включенный управляемым вариантом размещения службы Windows, заключается в том, что долго выполняющаяся служба WCF, размещенная за пределами IIS, в безопасной среде, которая не активируется сообщением. Вместо этого время существования службы контролируется операционной системой. Данный вариант размещения доступен во всех версиях Windows.

Службы IIS

Вариант размещения IIS интегрирован с ASP.NET и использует такие функции, как переработка процессов, завершение работы, мониторинг работоспособности процессов и активация на основе сообщений. В операционных системах Windows XP и Windows Server 2003 это предпочтительное решение для размещения приложений веб-служб, которые должны быть высокодоступными и высокомасштабируемыми. Кроме того, службы IIS обеспечивают встроенные возможности управления, которые обычно присущи серверным продуктам корпоративного уровня. Для реализации этого варианта размещения требуется правильно настроить службу IIS, но не требуется включать в приложение код размещения. Дополнительные сведения о настройке размещения IIS для службы WCF см. в статье "Практическое руководство. Размещение службы WCF в IIS".

Службы, размещенные в IIS, могут использовать только транспорт HTTP. Его реализация в IIS 5.1 привела к некоторым ограничениям в Windows XP. Активация на основе сообщений, предоставляемая для службы WCF службой IIS 5.1 в Windows XP, блокирует любую другую локальную службу WCF на том же компьютере с использованием порта 80 для обмена данными. Службы WCF могут выполняться в том же пуле приложений или рабочем процессе, что и другие приложения, размещенные в IIS 6.0 в Windows Server 2003. Но так как WCF и IIS 6.0 используют стек HTTP в режиме ядра (HTTP.sys), IIS 6.0 может совместно использовать порт 80 с другими локальными службами WCF, работающими на одном компьютере, в отличие от IIS 5.1.

Служба активации Windows (WAS)

Служба активации процессов Windows (WAS) — это новый механизм активации процесса для Windows Server 2008, который также доступен в Windows Vista. Она сохраняет знакомую модель процессов IIS 6.0 (пулы приложений и активацию процесса на основе сообщений) и функции размещения (такие как быстрая защита от сбоев, мониторинг работоспособности и переработка), но она удаляет зависимость от HTTP из архитектуры активации. СЛУЖБА IIS 7.0 использует WAS для выполнения активации на основе сообщений по протоколу HTTP. Дополнительные компоненты WCF также подключаются к WAS, чтобы обеспечить активацию на основе сообщений по другим протоколам, поддерживаемым WCF, такими как TCP, MSMQ и именованные каналы. Это позволяет приложениям, которые используют протоколы взаимодействия, использовать функции IIS, такие как перезапуск процессов, быструю защиту от сбоев и систему стандартных конфигураций, которые ранее были доступны только приложениям, работающим на базе протокола HTTP.

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

Выбор среды размещения

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

Среда размещения Распространенные сценарии Ключевые преимущества и ограничения
Управляемое приложение (резидентное размещение) — консольные приложения, используемые во время разработки.
— Расширенные возможности WinForm и клиентских приложений WPF, обращающиеся к службам.
-Гибкие.
— Простое развертывание.
— Не корпоративное решение для служб.
Службы Windows (прежнее название - службы NT) — долго выполняющаяся служба WCF, размещенная за пределами IIS. — время существования процесса службы, управляемое операционной системой, а не активировано сообщением.
— Поддерживается всеми версиями Windows.
— безопасная среда.
IIS 5.1, IIS 6.0 — Запуск службы WCF параллельно с ASP.NET содержимого в Интернете с помощью протокола HTTP. - Обработка переработки.
— завершение работы бездействия.
— Мониторинг работоспособности процесса.
— активация на основе сообщений.
— только HTTP.
Служба активации Windows (WAS) — Запуск службы WCF без установки IIS в Интернете с помощью различных транспортных протоколов. — СЛУЖБЫ IIS не требуются.
- Обработка переработки.
— завершение работы бездействия.
— Мониторинг работоспособности процесса.
— активация на основе сообщений.
— работает с HTTP, TCP, именованные каналы и MSMQ.
IIS 7.0 — Запуск службы WCF с содержимым ASP.NET.
— Запуск службы WCF в Интернете с помощью различных транспортных протоколов.
- ПРЕИМУЩЕСТВА WAS.
— интегрирован с содержимым ASP.NET и IIS.

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

Среда размещения Доступность платформы Поддерживаемые транспортные протоколы Перезапуск процессов и доменов приложений
Управляемые приложения (резидентное размещение) Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
No
Службы Windows (прежнее название - службы NT) Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
No
IIS 5,1 Windows XP HTTP Да
IIS 6,0 Windows Server 2003 HTTP Да
Служба активации Windows (WAS) Windows Vista, Windows Server 2008 HTTP,

net.tcp,

net.pipe,

net.msmq
Да

Важно отметить, что при запуске службы или любого расширения от недоверенного узла нарушается безопасность. Кроме того, при открытии ServiceHost олицетворения приложение должно убедиться, что пользователь не выключается, например кэширование WindowsIdentity пользователя.

См. также