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


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

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

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

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

Варианты хостинга

Self-Host в управляемом приложении

Службы 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
нет
Службы 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 пользователя.

См. также