Размещение служб
Чтобы служба стала активной, ее необходимо разместить в среде выполнения, которая создает ее, а также управляет ее контекстом и временем существования. Службы 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
Этот вариант размещения предполагает регистрацию домена приложения, в котором служба WCF размещается в качестве управляемой службы Windows (прежнее название — служба NT), так что время существования процесса службы контролируется диспетчером служб для служб Windows. Как и в случае резидентного размещения, в данном случае код размещения является частью приложения. Служба реализуется в качестве службы Windows и в качестве службы WCF, в результате чего она наследует классу ServiceBase и интерфейсу контракта службы WCF. Таким образом, объект ServiceHost создается и открывается с помощью переопределенного метода OnStart и закрывается с помощью переопределенного метода 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. Кроме того, к службе WAS подключаются дополнительные компоненты WCF для реализации активации с помощью сообщений с использованием других протоколов, поддерживаемых в WCF, например TCP, MSMQ и именованных каналов. Это позволяет приложениям, которые используют протоколы взаимодействия, использовать функции IIS, такие как перезапуск процессов, быструю защиту от сбоев и систему стандартных конфигураций, которые ранее были доступны только приложениям, работающим на базе протокола HTTP.
Для реализации этого варианта размещения требуется правильно настроить службу WAS, но не требуется включать в приложение код размещения. Дополнительные сведения настройке размещения в службе WAS см. в разделе Как разместить службу WCF в WAS.
Выбор среды размещения
В следующей таблице описаны некоторые ключевые преимущества и сценарии, связанные с каждым из вариантов размещения.
Среда размещения | Стандартные сценарии | Ключевые преимущества и ограничения |
---|---|---|
Управляемое приложение (резидентное размещение) |
|
|
Службы Windows (прежнее название — службы NT) |
|
|
IIS 5.1, IIS 6,0 |
|
|
Служба активации Windows (WAS) |
|
|
IIS 7.0 |
|
|
Выбор среды размещения зависит от версии Windows, в которой она развертывается, транспортных протоколов, с помощью которых требуется отправлять сообщения, и необходимого типа перезапуска процессов и доменов приложений. В следующей таблице приведены сведения, относящиеся к этим требованиям.
Среда размещения | Доступность платформы | Поддерживаемые транспортные протоколы | Перезапуск процессов и доменов приложений |
---|---|---|---|
Управляемые приложения (резидентное размещение) |
Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
Нет |
Службы Windows (прежнее название — службы NT) |
Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
Нет |
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 этого пользователя.
См. также
Задачи
Как разместить службу WCF в IIS
Как разместить службу WCF в WAS
Как разместить службу WCF в управляемой службе Windows
Как разместить службу WCF в управляемом приложении
Основные понятия
Требования WCF к системе
Базовый жизненный цикл программирования
Реализация контрактов служб