Servicios de hospedaje

Para activarse, se debe hospedar un servicio dentro de un entorno de tiempo en ejecución que lo crea y controla su contexto y duración. Los servicios de Windows Communication Foundation (WCF) están diseñados para ejecutarse en cualquier proceso de Windows que admita código administrado.

WCF proporciona un modelo de programación unificado para compilar aplicaciones que estén orientadas a servicios. Este modelo de programación permanece coherente y es independiente del entorno de tiempo de ejecución en el que se implementa el servicio. En la práctica, esto significa que el código de sus servicios tiene prácticamente el mismo aspecto independientemente de la opción de hospedaje.

Estas opciones de hospedaje pueden desde ejecutarse dentro de una aplicación de consola hasta entornos de servidor como un servicio de Windows que se ejecuta dentro de un proceso de trabajo administrado por Internet Information Server (IIS) o por Windows Process Activation Service (WAS). Los programadores eligen el entorno de hospedaje que satisface los requisitos de implementación del servicio. Estos requisitos pueden derivarse de la plataforma en la que se implementa la aplicación, del transporte en el que debe enviar y recibir los mensajes, o del tipo de proceso que recicla y otra administración de procesos requerida para garantizar una disponibilidad adecuada, o de alguna otra administración o requisitos de confiabilidad. La siguiente sección proporciona información y orientación sobre las opciones de hospedaje.

Opciones de hospedaje

Autohospedaje en una aplicación administrada

Los servicios WCF se pueden hospedar en cualquier aplicación administrada. Ésta es la opción más flexible puesto que es la que exige una menor infraestructura para implementar. Usted incrusta el código del servicio dentro del código de la aplicación administrada y, a continuación, crea y abre una instancia del ServiceHost para hacer que el servicio esté disponible. Para más información, consulte Procedimiento para hospedar un servicio WCF en una aplicación administrada.

Esta opción habilita dos escenarios comunes: los servicios WCF que se ejecutan en aplicaciones de consola y las aplicaciones cliente eficaces, como las que se basan en Windows Presentation Foundation o Windows Forms (Winforms). El hospedaje de un servicio WCF en una aplicación de consola resulta útil, por lo general, durante la fase de desarrollo de la aplicación. Esto hace que sean fáciles de depurar, de obtener información de seguimiento para averiguar lo que está sucediendo dentro de la aplicación y fáciles de mover copiándolas en nuevas ubicaciones. Esta opción de hospedaje también facilita la comunicación de aplicaciones de cliente eficaces, como WPF y aplicaciones Winforms, con el mundo externo. Por ejemplo, un cliente de colaboración punto a punto que usa WPF para su interfaz de usuario y también hospeda un servicio WCF que permite a otros clientes conectarse a este y compartir información.

Servicios administrados de Windows

Esta opción de hospedaje consiste en el registro del dominio de la aplicación (AppDomain) que hospeda un servicio WCF como un servicio administrado de Windows (anteriormente conocido como servicio NT) el administrador de control de servicios (SCM) controle la duración del proceso del servicio de los servicios de Windows. Al igual que la opción de autohospedaje, este tipo de entorno de hospedaje requiere que se escriba algún código de hospedaje como parte de la aplicación. El servicio se implementa como un servicio Windows y como un servicio WCF cuando se hace que herede de la clase ServiceBase, así como de una interfaz de contrato de servicios WCF. ServiceHost se crea y se abre a continuación dentro de un método OnStart(String[]) invalidado y cerrado dentro de un método OnStop() invalidado. Una clase de instalador que hereda de Installer también se debe implementar para permitir que la herramienta Installutl.exe instale el programa como un servicio de Windows. Para obtener más información, consulte Procedimiento para hospedar de un servicio WCF en un servicio Windows administrado. El escenario que la opción de hospedaje del servicio administrado de Windows habilita es el de un servicio WCF de larga ejecución hospedado fuera de IIS en un entorno seguro que no se activa mediante mensajes. En su lugar, el sistema operativo controla la duración del servicio. Esta opción de hospedaje está disponible en todas las versiones de Windows.

Internet Information Services (IIS)

La opción de hospedaje de IIS se integra con ASP.NET y usa las características que ofrecen estas tecnologías, como el reciclaje de procesos, cierre por inactividad, seguimiento de estado de procesos y activación mediante mensajes. En los sistemas operativos Windows XP y Windows Server 2003, esta es la solución preferida para el hospedaje de aplicaciones de servicios web que deben tener alta disponibilidad y alta escalabilidad. IIS también proporciona una capacidad de administración integrada que los clientes esperan de un producto de servidor de clase empresarial. Esta opción de hospedaje requiere que se configure correctamente IIS, pero no requiere que se escriba ningún código de hospedaje como parte de la aplicación. Para obtener más información sobre la configuración del hospedaje de ISS para un servicio WCF, consulte Procedimiento para hospedar un servicio WCF en IIS.

Observe que los servicios hospedados por IIS sólo pueden utilizar transporte HTTP. Su implementación en IIS 5.1 ha introducido algunas limitaciones en Windows XP. La activación mediante mensajes que IIS 5.1 en Windows XP proporciona a un servicio WCF impide que cualquier otro servicio WCF hospedado automáticamente en el mismo equipo use el puerto 80 para comunicarse. Los servicios WCF pueden ejecutarse en el mismo dominio de aplicación, grupo de aplicaciones o proceso de trabajo que otras aplicaciones cuando se hospedan en ISS 6.0 en Windows Server 2003. Pero, debido a que WCF e ISS 6.0 usan la pila HTTP del modo de kernel (HTTP.sys), ISS 6.0 puede compartir el puerto 80 con otros servicios WCF hospedados automáticamente que se ejecuten en el mismo equipo, al contrario que IIS 5.1.

Servicio de activación de procesos de Windows (WAS)

Windows Process Activación Servicio (WAS) es el nuevo mecanismo de activación de procesos de Windows Server 2008, que también está disponible en Windows Vista. WAS conserva el conocido modelo de procesos IIS 6.0 (activación de procesos mediante mensajes y grupos de aplicaciones) y características de hospedaje (por ejemplo, protección rápida contra errores, seguimiento de estado y reciclaje), pero quita la dependencia de HTTP de la arquitectura de activación. IIS 7.0 usa WAS para llevar a cabo la activación basada en mensajes a través de HTTP. Los componentes WCF adicionales también se conectan a WAS para proporcionar la activación mediante mensajes sobre otros protocolos que WCF admite, como TCP, MSMQ y canalizaciones con nombre. Esto permite a las aplicaciones que utilizan protocolos de comunicación utilizar las características de IIS, como el reciclaje de procesos, la protección rápida frente a errores y el sistema de configuración común que sólo estaban disponibles para las aplicaciones basadas en HTTP.

Esta opción de hospedaje requiere que se configure correctamente WAS, pero no requiere que se escriba ningún código de hospedaje como parte de la aplicación. Para obtener más información sobre la configuración del hospedaje de WAS, consulte Procedimiento para hospedar un servicio WCF en WAS.

Elección de un entorno de hospedaje

La siguiente tabla resume algunos de las ventajas y escenarios clave asociados a cada una de las opciones de hospedaje.

Entorno de hospedaje Escenarios comunes Ventajas y limitaciones clave
Aplicación administrada ("autohospedada") - Aplicaciones de consola que se usan durante el desarrollo.
- WinForm eficaz y aplicaciones cliente WCF que acceden a servicios.
- Flexible.
- Fácil de implementar.
- No es una solución empresarial de servicios.
Windows Services (conocidos anteriormente como servicios NT) - Un servicio de larga ejecución que se hospeda fuera de IIS. - Duración del proceso de servicio que controla el sistema operativo que no está activado por mensajes.
- Compatible con todas las versiones de Windows.
- Entorno seguro.
IIS 5.1, IIS 6.0 - Ejecución de un servicio WCF en paralelo con contenido ASP.NET en Internet con el protocolo HTTP. - Reciclaje de procesos.
- Apagado por inactividad.
- Seguimiento de estado de procesos.
- Activación por mensajes.
- Solo HTTP.
Servicio de activación de procesos de Windows (WAS) - Ejecución de un servicio WCF sin instalar IIS en Internet mediante varios protocolos de transporte. - IIS no es necesario.
- Reciclaje de procesos.
- Apagado por inactividad.
- Seguimiento de estado de procesos.
- Activación por mensajes.
- Funciona con HTTP, TCP, canalizaciones con nombre y MSMQ.
IIS 7.0 - Ejecución de un servicio WCF con contenido ASP.NET.
- Ejecución de un servicio WCF en Internet con varios protocolos de transporte.
- Ventajas de WAS.
- Integrado con contenido ASP.NET e IIS.

La opción de un entorno de hospedaje depende de la versión de Windows en la que se implemente, los transportes que requiera para enviar mensajes y el tipo de proceso y reciclaje de dominio de aplicación que requiera. La siguiente tabla resume los datos relacionados con estos requisitos.

Entorno de hospedaje Disponibilidad de plataforma Transportes admitidos Reciclaje de procesos y AppDomain
Aplicaciones administradas ("autohospedadas") Windows Vista, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
No
Windows Services (conocidos anteriormente como servicios NT) Windows Vista, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
No
IIS 5,1 Windows XP HTTP Yes
IIS 6,0 Windows Server 2003 HTTP
Servicio de activación de procesos de Windows (WAS) Windows Vista, Windows Server 2008 HTTP,

net.tcp,

net.pipe,

net.msmq
Yes

Es importante tener en cuenta que ejecutar un servicio o cualquier extensión desde un host que no sea de confianza pone en peligro la seguridad. Además, cuando abra ServiceHost en suplantación, una aplicación deberá garantizar que el usuario no ha cerrado sesión, por ejemplo mediante el almacenamiento en caché de la WindowsIdentity del usuario.

Consulte también