Servicios de hospedaje

Para volverse activo, un servicio se debe hospedar dentro de un entorno de 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 generar 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

Autohospedaje en una aplicación administrada

Los servicios de 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, consulte Hospedaje de un servicio WCF en un aplicación administrada.

Esta opción habilita dos escenarios comunes: los servicios de WCF que se ejecutan dentro de aplicaciones de consola y las aplicaciones de cliente completas como las basadas en Windows Presentation Foundation (WPF) o Windows Forms (Winforms). Hospedar un servicio de WCF dentro de una aplicación de consola es ú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 completas, como WPF y aplicaciones de Winforms, con el mundo externo. Por ejemplo, un cliente de colaboración punto a punto que utiliza WPF para su interfaz de usuario y también hospeda un servicio de WCF que permite a otros clientes conectar con él 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 de WCF como un 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 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 de Windows y como un servicio de WCF provocando que herede de la clase ServiceBase, así como de una interfaz de contrato de servicios de WCF. ServiceHost se crea y se abre a continuación dentro de un método OnStart 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 Hospedaje de un servicio WCF en un servicio administrado de Windows. El escenario habilitado por la opción de hospedaje del servicio administrado de Windows es el de un servicio de WCF de ejecución prolongada hospedado fuera de IIS en un entorno seguro que no es activado por mensaje. 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 alojamiento de IIS se integra con ASP.NET y utiliza las características que ofrecen estas tecnologías, como el reciclaje de procesos, cierre por inactividad, supervisión de estado de procesos y activación basada en mensajes. En los sistemas operativos Windows Server 2003 y Windows XP, ésta es la solución preferida para hospedar aplicaciones de servicios web que deben estar muy disponibles y ser muy 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 IIS se configure correctamente, pero no requiere que se escriba ningún código de hospedaje como parte de la aplicación. Para obtener más información acerca de configuración del hospedaje de IIS para un servicio de WCF, vea 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 basada en mensajes proporcionada para un servicio de WCF por parte de IIS 5.1 en Windows XP bloquea la posibilidad de que cualquier otro servicio de WCF autohospedado utilice el puerto 80 para comunicarse. Los servicios de WCF se pueden ejecutar en el mismo Appdomain/grupo de aplicaciones/proceso de trabajo que otras aplicaciones cuando se hospeda mediante IIS 6.0 en Windows Server 2003. Pero debido a que WCF e IIS 6.0 usan la pila HTTP de modo de kernel (HTTP.sys), IIS 6.0 puede compartir el puerto 80 con otros servicios de WCF autohospedados 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 del Windows Server 2008, que también está disponible en Windows Vista. Retiene las características familiares del modelo de procesamiento de IIS 6.0 (grupos de aplicaciones y activación de procesos basada en mensajes) y de hospedaje (como protección rápida contra errores, supervisión de estado y reciclaje), pero elimina la dependencia de la arquitectura de activación con respecto a HTTP. IIS 7.0 usa WAS para lograr la activación mediante mensajes sobre HTTP. Los componentes de WCF adicionales también se añaden 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 WAS se configure correctamente, pero no requiere que escriba ningún código de hospedaje como parte de la aplicación. Para obtener más información acerca de configuración del hospedaje de WAS, vea 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 utilizadas durante el desarrollo.
  • WinForm enriquecidos y aplicaciones de cliente de WPF que obtienen acceso 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 WCF de ejecución prolongada hospedado fuera de IIS.
  • Duración de proceso del servicio controlada por el sistema operativo, no activada por mensaje.
  • Admitida por todas las versiones de Windows.
  • Entorno seguro.

IIS 5.1, IIS 6.0

  • Ejecución de un servicio de WCF en paralelo con contenido ASP.NET en Internet utilizando el protocolo HTTP.
  • Reciclaje de procesos.
  • Cierre por inactividad.
  • Supervisión de estado de procesos.
  • Activación por mensajes.
  • Sólo HTTP.

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

  • Ejecución de un servicio de WCF sin instalar IIS en Internet utilizando varios protocolos de transporte.
  • No se requiere IIS.
  • Reciclaje de procesos.
  • Cierre por inactividad.
  • Supervisión 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 de WCF con contenido ASP.NET.
  • Ejecución de un servicio de WCF en Internet utilizando varios protocolos de transporte.
  • Ventajas de WAS.
  • Se integra con contenido de IIS y ASP.NET.

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 Appdomai

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

Consulte también

Tareas

Procedimiento para hospedar un servicio WCF en IIS
Procedimiento para hospedar un servicio WCF en WAS
Hospedaje de un servicio WCF en un servicio administrado de Windows
Hospedaje de un servicio WCF en un aplicación administrada

Conceptos

Requisitos del sistema WCF
Ciclo de vida de programación básica
Implementación de contratos de servicio