Compartir a través de


Servicios de hospedaje

Para activarse, un servicio debe hospedarse dentro de un entorno en tiempo de ejecución que lo cree y controle 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 orientadas a servicios. Este modelo de programación sigue siendo coherente y es independiente del entorno en tiempo de ejecución en el que se implementa el servicio. En la práctica, esto significa que el código de los servicios tiene el mismo aspecto que la opción de hospedaje.

Estas opciones de hospedaje van desde la ejecución dentro de una aplicación de consola a entornos de servidor, como un servicio de Windows que se ejecuta dentro de un proceso de trabajo administrado por Internet Information Services (IIS) o por el Servicio de activación de procesos de Windows (WAS). Los desarrolladores eligen el entorno de hospedaje que satisface los requisitos de implementación del servicio. Estos requisitos pueden derivar de la plataforma en la que se implementa la aplicación, el transporte en el que debe enviar y recibir mensajes, o en el tipo de reciclaje de procesos y otra administración de procesos necesaria para garantizar una disponibilidad adecuada, o en algunos otros requisitos de administración o confiabilidad. En la sección siguiente se proporciona información e instrucciones 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. Esta es la opción más flexible porque requiere que se implemente la infraestructura mínima. Inserte el código para el servicio dentro del código de aplicación administrada y, a continuación, cree y abra una instancia de ServiceHost para 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 habilita dos escenarios comunes: servicios WCF que se ejecutan dentro de aplicaciones de consola y aplicaciones cliente enriquecidas, 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, fáciles de obtener información de seguimiento para averiguar lo que sucede dentro de la aplicación, y fáciles de mover al copiarlos a nuevas ubicaciones. Esta opción de hospedaje también facilita que las aplicaciones cliente enriquecidas, 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 servicio administrado de Windows (anteriormente conocido como servicio NT) para que el administrador de control de servicios (SCM) controle la duración del proceso del servicio para los servicios de Windows. Al igual que la opción de autohospedaje, este tipo de entorno de hospedaje requiere que algún código de hospedaje se escriba como parte de la aplicación. El servicio se implementa como un servicio de Windows y como un servicio WCF, lo que hace que herede de la ServiceBase clase, así como de una interfaz de contrato de servicio WCF. A ServiceHost continuación, se crea y se abre dentro de un método invalidado y se cierra dentro de un método invalidado OnStart(String[])OnStop() . También se debe implementar una clase de instalador que herede Installer de para permitir que el programa se instale como servicio de Windows mediante la herramienta Installutil.exe. 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 del servicio administrado de Windows es el de un servicio WCF de larga duración hospedado fuera de IIS en un entorno seguro que no está activado por mensajes. 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 del proceso 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 ofrece la 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 How to: Host a WCF Service in 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 bloquea cualquier otro servicio WCF autohospedado en el mismo equipo desde el uso del puerto 80 para comunicarse. Los servicios WCF se pueden ejecutar en el mismo proceso appDomain/Grupo de aplicaciones o trabajo que otras aplicaciones cuando se hospedan en IIS 6.0 en Windows Server 2003. Pero dado que 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 autohospedados que se ejecutan en la misma máquina, a diferencia de IIS 5.1.

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

El Servicio de activación de procesos de Windows (WAS) es el nuevo mecanismo de activación de procesos para Windows Server 2008 que también está disponible en Windows Vista. Conserva el modelo de proceso conocido 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 de estado y el reciclaje), pero quita la dependencia de HTTP de la arquitectura de activación. IIS 7.0 usa WAS para realizar la activación basada en mensajes a través de HTTP. Los componentes de WCF adicionales también se conectan a WAS para proporcionar activación basada en mensajes a través de los demás protocolos compatibles con WCF, como TCP, MSMQ y canalizaciones con nombre. Esto permite a las aplicaciones que usan protocolos de comunicación usar las características de IIS, como el reciclaje de procesos, la protección rápida por error y el sistema de configuración común que solo estaban disponibles para las aplicaciones basadas en HTTP.

Esta opción de hospedaje requiere que WAS esté configurado correctamente, pero no requiere que 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 How to: Host a WCF Service in WAS.

Elegir un entorno de hospedaje

En la tabla siguiente se resumen algunas de las principales ventajas y escenarios asociados a cada una de las opciones de hospedaje.

Entorno de hospedaje Escenarios comunes Ventajas y limitaciones clave
Aplicación administrada ("autohospedado") - Aplicaciones de consola usadas durante el desarrollo.
- Aplicaciones cliente de WinForm y WPF enriquecidas que acceden a los servicios.
-Flexible.
- Fácil de implementar.
- No es una solución empresarial para los servicios.
Servicios de Windows (anteriormente conocidos como servicios NT) - Un servicio WCF de larga duración hospedado fuera de IIS. - Duración del proceso de servicio controlada por el sistema operativo, no activada por mensaje.
- Compatible con todas las versiones de Windows.
- Entorno seguro.
IIS 5.1, IIS 6.0 - Ejecución de un servicio WCF en paralelo con ASP.NET contenido en Internet mediante el protocolo HTTP. - Proceso de reciclaje.
- Apagado inactivo.
- Procesar la supervisión del estado.
- 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. - No se requiere IIS.
- Proceso de reciclaje.
- Apagado inactivo.
- Procesar la supervisión del estado.
- Activación basada en mensajes.
- Funciona con HTTP, TCP, canalizaciones con nombre y MSMQ.
IIS 7.0 - Ejecución de un servicio WCF con contenido de ASP.NET.
- Ejecutar un servicio WCF en Internet mediante varios protocolos de transporte.
- Ventajas was.
- Integrado con contenido de ASP.NET e IIS.

La elección de un entorno de hospedaje depende de la versión de Windows en la que se implementa, los transportes que requiere para enviar mensajes y el tipo de proceso y reciclaje de dominio de aplicación que requiere. En la tabla siguiente se resumen los datos relacionados con estos requisitos.

Entorno de hospedaje Disponibilidad de la plataforma Transportes admitidos Proceso y reciclaje de AppDomain
Aplicaciones administradas ("autohospedado") Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP

net.tcp,

net.pipe,

net.msmq
No
Servicios de Windows (anteriormente conocidos 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 la ejecución de un servicio o cualquier extensión de un host que no es de confianza pone en peligro la seguridad. Además, al abrir una ServiceHost suplantación bajo suplantación, una aplicación debe asegurarse de que el usuario no haya iniciado sesión, por ejemplo, almacenando en caché el WindowsIdentity del usuario.

Consulte también