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. Windows Communication Foundation (WCF) están diseñados para ejecutarse en cualquier proceso Windows que admita código administrado.

WCF proporciona un modelo de programación unificado para compilar aplicaciones 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

Self-Host 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 obtener más información, vea Cómo: Hospedar un servicio WCF en una aplicación administrada.

Esta opción permite dos escenarios comunes: servicios WCF que se ejecutan dentro de aplicaciones de consola y aplicaciones cliente enriquecciones, como las basadas en Windows Presentation Foundation (WPF) o Windows Forms (WinForms). Hospedar un servicio WCF dentro de una aplicación de consola suele ser útil 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 que las aplicaciones cliente enriquecciones, como las aplicaciones WPF y WinForms, se comuniquen con el mundo exterior. 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 él y compartir información.

Servicios administrados de Windows

Esta opción de hospedaje consiste en registrar el dominio de aplicación (AppDomain) que hospeda un servicio WCF como un servicio Windows administrado (anteriormente conocido como servicio NT) para que el administrador de control de servicios (SCM) controle la duración del proceso del servicio para Windows servicios. 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 ServiceBase haciendo que herede de la clase , así como de una interfaz de contrato de servicio 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, vea How to: Host a WCF Service in a Managed Windows Service. El escenario habilitado por la opción de hospedaje managed Windows Service es el de un servicio WCF de ejecución larga hospedado fuera de IIS en un entorno seguro que no está activado por 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, el apagado inactivo, la supervisión del estado de los procesos y la activación basada en mensajes. En los sistemas operativos Windows XP y Windows Server 2003, esta es la solución preferida para hospedar aplicaciones de servicio web que deben ser de alta disponibilidad y altamente escalables. 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 cómo configurar el hospedaje de IIS para un servicio WCF, vea Cómo: Hospedar un servicio WCF en IIS.

Los servicios hospedados en IIS solo pueden usar el transporte HTTP. Su implementación en IIS 5.1 ha introducido algunas limitaciones en Windows XP. La activación basada en mensajes proporcionada para un servicio WCF por IIS 5.1 en Windows XP impide que cualquier otro servicio WCF auto hospedado en el mismo equipo use el puerto 80 para comunicarse. Los servicios WCF se pueden ejecutar en el mismo appdomain/grupo de aplicaciones/proceso de trabajo que otras aplicaciones cuando se hospedan en IIS 6.0 en Windows Server 2003. Pero como WCF e IIS 6.0 usan la pila HTTP en modo kernel (HTTP.sys), IIS 6.0 puede compartir el puerto 80 con otros servicios WCF auto-hospedados que se ejecutan en la misma máquina, a diferencia de IIS 5.1.

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

Windows Process Activation Service (WAS) es el nuevo mecanismo de activación de procesos para Windows Server 2008 que también está disponible en Windows Vista. Conserva el conocido modelo de proceso de IIS 6.0 (grupos de aplicaciones y activación de procesos basados en mensajes) y características de hospedaje (como la protección rápida de errores, la supervisión del estado y el 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 adicionales de WCF también se conecta a WAS para proporcionar activación basada en mensajes sobre los demás protocolos que admite WCF, 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 cómo configurar el hospedaje was, vea Cómo: Hospedar un servicio WCF en WAS.

Elegir 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 usadas durante el desarrollo.
- Aplicaciones cliente de WinForm y WPF enriquecciones que acceden a los servicios.
- Flexible.
- Fácil de implementar.
- No es una solución empresarial para servicios.
Windows Services (conocidos anteriormente como servicios NT) - Un servicio WCF de ejecución larga hospedado fuera de IIS. - Duración del proceso de servicio controlada por el sistema operativo, no activada por mensajes.
- Compatible con todas las versiones de Windows.
- Entorno seguro.
IIS 5.1, IIS 6.0 - Ejecutar un servicio WCF en paralelo con ASP.NET contenido en Internet mediante el protocolo HTTP. - Reciclaje de procesos.
- Apagado inactivo.
- Supervisión del estado de proceso.
- Activación basada en mensajes.
- Solo HTTP.
Servicio de activación de procesos de Windows (WAS) - Ejecutar un servicio WCF sin instalar IIS en Internet mediante varios protocolos de transporte. - IIS no es necesario.
- Reciclaje de procesos.
- Apagado inactivo.
- Supervisión del estado de proceso.
- Activación basada en mensajes.
- Funciona con HTTP, TCP, canalizaciones con nombre y MSMQ.
IIS 7.0 - Ejecutar un servicio WCF con ASP.NET contenido.
- Ejecutar un servicio WCF en Internet mediante varios protocolos de transporte.
- Ventajas de WAS.
- Integrado con ASP.NET y contenido de 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 XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
No
Windows Services (conocidos anteriormente como servicios 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
Servicio de activación de procesos de Windows (WAS) Windows Vista, Windows Server 2008 HTTP,

net.tcp,

net.pipe,

net.msmq

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, al abrir un ServiceHost objeto en suplantación, una aplicación debe asegurarse de que el usuario no ha cerrado la sesión, WindowsIdentity por ejemplo mediante el almacenamiento en caché del usuario.

Vea también