Размещение службHosting Services

Для активации службы ее необходимо разместить в среде выполнения, которая создает эту службу и управляет ее контекстом и временем существования.To become active, a service must be hosted within a run-time environment that creates it and controls its context and lifetime. Службы Windows Communication Foundation (WCF) предназначены для выполнения в любом процессе Windows, который поддерживает управляемый код.Windows Communication Foundation (WCF) services are designed to run in any Windows process that supports managed code.

WCF предоставляет унифицированную модель программирования для создания приложений, ориентированных на службы.WCF provides a unified programming model for building service-oriented applications. Эта модель программирования остается согласованной и не зависит от среды выполнения, в которой развертывается служба.This programming model remains consistent and is independent of the run-time environment in which the service is deployed. На практике это означает, что код службы всегда выглядит практически одинаково, независимо от вариантов размещения.In practice, this means that the code for your services looks much the same whatever the hosting option.

Варианты размещения могут самыми различными - от выполнения внутри консольного приложения до серверных сред, таких как службы Windows, выполняемых внутри рабочего процесса, который управляется службами IIS или службой активации Windows (WAS).These hosting options range from running inside a console application to server environments such as a Windows service running within a worker process managed by Internet Information Services (IIS) or by Windows Process Activation Service (WAS). Разработчики могут выбрать среду размещения, которая соответствует требованиям по развертыванию службы.Developers choose the hosting environment that satisfies the service's deployment requirements. Эти требования могут определяться платформой, на которой развертывается приложение, транспортом, с помощью которого оно должно отправлять и принимать сообщения, или типом перезапуска процессов и другими механизмами управления процессами, необходимыми для обеспечения нужного уровня доступности службы, а также другими требованиями по управлению и надежности.These requirements might derive from the platform on which the application is deployed, the transport on which it must send and receive messages, or on the type of process recycling and other process management required to ensure adequate availability, or on some other management or reliability requirements. В следующем разделе приведены сведения и инструкции по применению различных вариантов размещения.The next section provides information and guidance on hosting options.

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

Резидентное размещение в управляемом приложенииSelf-Hosting in a Managed Application

Службы WCF можно размещать в любом управляемом приложении.WCF services can be hosted in any managed application. Это наиболее гибкий вариант, поскольку он почти не требует развертывания инфраструктуры.This is the most flexible option because it requires the least infrastructure to deploy. Код службы внедряется в код управляемого приложения, после чего создается и открывается экземпляр класса ServiceHost , чтобы служба стала доступной.You embed the code for the service inside the managed application code and then create and open an instance of the ServiceHost to make the service available. Дополнительные сведения см. в разделе Практическое руководство. Размещение службы WCF в управляемом приложении.For more information, see How to: Host a WCF Service in a Managed Application.

Этот параметр включает два распространенных сценария: Службы WCF, выполняющиеся внутри консольных приложений и многофункциональных клиентских приложений на основе Windows Presentation Foundation (WPF) или Windows Forms (WinForms).This option enables two common scenarios: WCF services running inside console applications and rich client applications such as those based on Windows Presentation Foundation (WPF) or Windows Forms (WinForms). Размещение службы WCF внутри консольного приложения обычно используется на этапе разработки приложения.Hosting a WCF service inside a console application is typically useful during the application's development phase. В этом случае приложение легко отлаживать, удобно получать данные трассировки, чтобы узнать, что происходит внутри приложения, и удобно копировать приложение в другие расположения.This makes them easy to debug, easy to get trace information from to find out what is happening inside of the application, and easy to move around by copying them to new locations. Этот вариант размещения также упрощает для полнофункциональных клиентских приложений, таких как WPF и WinForms, для обмена данными с внешним миром.This hosting option also makes it easy for rich client applications, such as WPF and WinForms applications, to communicate with the outside world. Например, клиент peer-to-peer совместной работы, который использует WPF для пользовательского интерфейса, а также размещается служба WCF, позволяющую другим клиентам подключаться к нему и обмениваться информацией.For example, a peer-to-peer collaboration client that uses WPF for its user interface and also hosts a WCF service that allows other clients to connect to it and share information.

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

Этот вариант размещения предполагает регистрацию домена приложения (AppDomain), на котором размещена служба WCF как службу Windows (прежнее название-служба NT), так что время существования процесса службы контролируется диспетчером управления службами (SCM) для Службы Windows.This hosting option consists of registering the application domain (AppDomain) that hosts an WCF service as a managed Windows Service (formerly known as NT service) so that the process lifetime of the service is controlled by the service control manager (SCM) for Windows services. Как и в случае резидентного размещения, в данном случае код размещения является частью приложения.Like the self-hosting option, this type of hosting environment requires that some hosting code is written as part of the application. Служба реализуется как услуга Windows и как служба WCF, вызывая его наследование от ServiceBase класса, а также от WCF интерфейсом контракта службы.The service is implemented as both a Windows Service and as an WCF service by causing it to inherit from the ServiceBase class as well as from an WCF service contract interface. Таким образом, объект ServiceHost создается и открывается с помощью переопределенного метода OnStart(String[]) и закрывается с помощью переопределенного метода OnStop() .The ServiceHost is then created and opened within an overridden OnStart(String[]) method and closed within an overridden OnStop() method. Кроме того, необходимо реализовать класс установщика, наследующий классу Installer , чтобы программу можно было устанавливать в качестве службы Windows с помощью средства Installutil.exe.An installer class that inherits from Installer must also be implemented to allow the program to be installed as a Windows Service by the Installutil.exe tool. Дополнительные сведения см. в разделе Практическое руководство. Размещение службы WCF в службе Windows, управляемых.For more information, see How to: Host a WCF Service in a Managed Windows Service. Сценарий, реализуемый с помощью управляемой службе Windows, варианта размещения — это долго выполняющейся службы WCF, размещенных вне IIS в защищенной среде, которая является не активируется сообщениями.The scenario enabled by the managed Windows Service hosting option is that of a long-running WCF service hosted outside of IIS in a secure environment that is not message-activated. Вместо этого время существования службы контролируется операционной системой.The lifetime of the service is controlled instead by the operating system. Данный вариант размещения доступен во всех версиях Windows.This hosting option is available in all versions of Windows.

службы IISInternet Information Services (IIS)

IIS, варианта размещения интегрируется с ASP.NET и использует возможности, которые предоставляют эти технологии, таких как процесс перезапуска, завершение при ожидании, наблюдение за работоспособностью процессов и активация на основе сообщений.The IIS hosting option is integrated with ASP.NET and uses the features these technologies offer, such as process recycling, idle shutdown, process health monitoring, and message-based activation. В операционных системах Windows XPWindows XP и Windows Server 2003Windows Server 2003 этот вариант является предпочтительным при размещении приложений веб-служб, которым требуется высокий уровень доступности и масштабируемости.On the Windows XPWindows XP and Windows Server 2003Windows Server 2003 operating systems, this is the preferred solution for hosting Web service applications that must be highly available and highly scalable. Кроме того, службы IIS обеспечивают встроенные возможности управления, которые обычно присущи серверным продуктам корпоративного уровня.IIS also offers the integrated manageability that customers expect from an enterprise-class server product. Для реализации этого варианта размещения требуется правильно настроить службу IIS, но не требуется включать в приложение код размещения.This hosting option requires that IIS be properly configured, but it does not require that any hosting code be written as part of the application. Дополнительные сведения о настройке IIS размещения для службы WCF, см. в разделе как: Размещение службы WCF в IIS.For more information about how to configure IIS hosting for a WCF service, see How to: Host a WCF Service in IIS.

Обратите внимание, что службы, размещаемые в IIS, могут использовать только транспорт HTTP.Note that IIS-hosted services can only use the HTTP transport. Реализация в IIS 5.1 накладывает некоторые ограничения при использовании Windows XPWindows XP.Its implementation in IIS 5.1 has introduced some limitations in Windows XPWindows XP. Активация на основе сообщений, предоставляемые для службы WCF IIS 5.1 в Windows XPWindows XP блокирует все другие резидентной службы WCF на одном компьютере с помощью порта 80.The message-based activation provided for an WCF service by IIS 5.1 on Windows XPWindows XP blocks any other self-hosted WCF service on the same computer from using port 80 to communicate. Службы WCF могут работать в одном процессе пула и рабочих домена приложения или приложения, что и другие приложения, если они размещаются в IIS 6.0 на Windows Server 2003Windows Server 2003.WCF services can run in the same AppDomain/Application Pool/Worker Process as other applications when hosted by IIS 6.0 on Windows Server 2003Windows Server 2003. Но так, как использовать стек HTTP режима ядра (HTTP.sys), WCF и IIS 6.0, IIS 6.0 можно совместно использовать порт 80 других резидентной службы WCF, работающие на одном компьютере, в отличие от IIS 5.1.But because WCF and IIS 6.0 both use the kernel-mode HTTP stack (HTTP.sys), IIS 6.0 can share port 80 with other self-hosted WCF services running on the same machine, unlike IIS 5.1.

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

Служба активации Windows (WAS) - это новый механизм активации процессов для Windows Server 2008Windows Server 2008 , который также доступен в Windows VistaWindows Vista.Windows Process Activation Service (WAS) is the new process activation mechanism for the Windows Server 2008Windows Server 2008 that is also available on Windows VistaWindows Vista. Она сохраняет знакомую модель процесса IIS 6.0 (пулы приложений и активация процессов на основе сообщений) и размещение компонентов (например, быстрая защита от сбоев, мониторинг работоспособности и повторное использование), но оно устраняет зависимость от HTTP из активации архитектура.It retains the familiar IIS 6.0 process model (application pools and message-based process activation) and hosting features (such as rapid failure protection, health monitoring, and recycling), but it removes the dependency on HTTP from the activation architecture. IIS 7.0 использует архитектуру WAS для выполнения активации на основе сообщений по протоколу HTTP.IIS 7.0 uses WAS to accomplish message-based activation over HTTP. Дополнительные компоненты WCF также подключите WAS, обеспечивая активации на основе сообщений для других протоколов, поддерживаемых WCF, таких как TCP, MSMQ и именованных каналов.Additional WCF components also plug into WAS to provide message-based activation over the other protocols that WCF supports, such as TCP, MSMQ, and named pipes. Это позволяет приложениям, которые используют протоколы взаимодействия, использовать функции IIS, такие как перезапуск процессов, быструю защиту от сбоев и систему стандартных конфигураций, которые ранее были доступны только приложениям, работающим на базе протокола HTTP.This allows applications that use communication protocols to use the IIS features such as process recycling, rapid fail protection, and the common configuration system that were only available to HTTP-based applications.

Для реализации этого варианта размещения требуется правильно настроить службу WAS, но не требуется включать в приложение код размещения.This hosting option requires that WAS be properly configured, but it does not require you to write any hosting code as part of the application. Дополнительные сведения о настройке размещалась, см. в разделе как: Размещение службы WCF в WAS.For more information about how to configure WAS hosting, see How to: Host a WCF Service in WAS.

Выбор среды размещенияChoosing a Hosting Environment

В следующей таблице описаны некоторые ключевые преимущества и сценарии, связанные с каждым из вариантов размещения.The following table summarizes some of the key benefits and scenarios associated with each of the hosting options.

Среда размещенияHosting Environment Стандартные сценарииCommon Scenarios Ключевые преимущества и ограниченияKey Benefits and Limitations
Управляемое приложение (резидентное размещение)Managed Application ("Self-Hosted") — Консольное приложение, используемое во время разработки.- Console applications used during development.
-Насыщенное WinForm и клиентские приложения WPF, доступ к службам.- Rich WinForm and WPF client applications accessing services.
-Гибкие.- Flexible.
-Проста в развертывании.- Easy to deploy.
-Не корпоративного решения для служб.- Not an enterprise solution for services.
Службы Windows (прежнее название - службы NT)Windows Services (formerly known as NT services) -Долго выполняющейся службой WCF, размещенной за пределами служб IIS.- A long-running WCF service hosted outside of IIS. -Управлять операционной системой, не активируется сообщениями время существования процесса службы.- Service process lifetime controlled by the operating system, not message-activated.
-Поддерживается всеми версиями Windows.- Supported by all versions of Windows.
— Безопасная среда.- Secure environment.
IIS 5.1 И IIS 6.0IIS 5.1, IIS 6.0 -Запуск службы WCF side-by-side с содержимым ASP.NET в Интернете по протоколу HTTP.- Running a WCF service side-by-side with ASP.NET content on the Internet using the HTTP protocol. -Перезапуск процессов.- Process recycling.
-Shutdown простоя.- Idle shutdown.
— Мониторинг работоспособности процессов.- Process health monitoring.
-Активация основе сообщений.- Message-based activation.
— Только для HTTP.- HTTP only.
Служба активации Windows (WAS)Windows Process Activation Service (WAS) -Запуск службы WCF без установки IIS в Интернет с использованием различных транспортных протоколов.- Running a WCF service without installing IIS on the Internet using various transport protocols. — Службы IIS не требуются.- IIS is not required.
-Перезапуск процессов.- Process recycling.
-Shutdown простоя.- Idle shutdown.
— Мониторинг работоспособности процессов.- Process health monitoring.
-Активация основе сообщений.- Message-based activation.
-Работает с HTTP, TCP, именованные каналы и MSMQ.- Works with HTTP, TCP, named pipes, and MSMQ.
IIS 7.0IIS 7.0 -Запуск службы WCF с содержимым ASP.NET.- Running a WCF service with ASP.NET content.
-Запуск службы WCF в Интернете с использованием различных транспортных протоколов.- Running a WCF service on the Internet using various transport protocols.
-Это приложение было преимущества.- WAS benefits.
-Интегрированные с содержимым ASP.NET и IIS.- Integrated with ASP.NET and IIS content.

Выбор среды размещения зависит от версии Windows, в которой она развертывается, транспортных протоколов, с помощью которых требуется отправлять сообщения, и необходимого типа перезапуска процессов и доменов приложений.The choice of a hosting environment depends on the version of Windows on which it is deployed, the transports it requires to send messages and the type of process and application domain recycling it requires. В следующей таблице приведены сведения, относящиеся к этим требованиям.The following table summarizes the data related to these requirements.

Среда размещенияHosting Environment Доступность платформыPlatform Availability Поддерживаемые транспортные протоколыTransports Supported Перезапуск процессов и доменов приложенийProcess and AppDomain Recycling
Управляемые приложения (резидентное размещение)Managed Applications ("Self-Hosted") Windows XPWindows XP, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,

Windows Server 2008Windows Server 2008
HTTP,HTTP,

net.tcp,net.tcp,

net.pipe,net.pipe,

net.msmqnet.msmq
НетNo
Службы Windows (прежнее название - службы NT)Windows Services (formerly known as NT services) Windows XPWindows XP, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,, Windows Server 2003Windows Server 2003, Windows VistaWindows Vista,

Windows Server 2008Windows Server 2008
HTTP,HTTP,

net.tcp,net.tcp,

net.pipe,net.pipe,

net.msmqnet.msmq
НетNo
IIS 5,1IIS 5.1 Windows XPWindows XP HTTPHTTP ДаYes
IIS 6,0IIS 6.0 Windows Server 2003Windows Server 2003 HTTPHTTP ДаYes
Служба активации Windows (WAS)Windows Process Activation Service (WAS) Windows VistaWindows Vista, Windows Server 2008Windows Server 2008, Windows Server 2008Windows Server 2008 HTTP,HTTP,

net.tcp,net.tcp,

net.pipe,net.pipe,

net.msmqnet.msmq
ДаYes

Важно отметить, что при запуске службы или любого расширения от недоверенного узла нарушается безопасность.It is important to note that running a service or any extension from an untrusted host compromises security. Кроме того, следует иметь в ввиду, что при открытии объекта ServiceHost при олицетворении приложение должно следить, чтобы пользователь не вышел из системы, например путем кэширования объекта WindowsIdentity этого пользователя.Also, note that when opening a ServiceHost under impersonation, an application must ensure that the user is not logged off, for example by caching the WindowsIdentity of the user.

См. такжеSee also