Share via


Hospedaje en una aplicación de servicios de Windows

Los servicios de Windows (anteriormente conocidos como servicios de Windows NT) proporcionan un modelo de procesamiento particularmente apropiado para las aplicaciones que deben vivir en una aplicación ejecutable de larga duración y que no deben mostrar ninguna forma de interfaz de usuario. La duración de un proceso de una aplicación de servicios de Windows es administrada mediante el administrador de control de servicios (SCM) que le permite iniciar, detener y pausar aplicaciones de servicios de Windows. Puede configurar un proceso de servicio de Windows para que se inicie automáticamente cuando el equipo se inicia, convirtiéndolo en un entorno de hospedaje apropiado para aplicaciones que siempre deban estar en funcionamiento. Para obtener más información acerca de aplicaciones de servicios de Windows, vea Windows Service Applications.

Las aplicaciones que hospedan servicios de Windows Communication Foundation (WCF) de ejecución prolongada comparten muchas características con los servicios de Windows. En concreto, los servicios de WCF son aplicaciones ejecutables de servidor de ejecución prolongada que no interactúan directamente con el usuario y que, por consiguiente, no implementan ninguna forma de interfaz de usuario. Como tal, los servicios de WCF de hospedaje que se encuentran dentro de una aplicación de servicios de Windows constituyen una opción para generar aplicaciones de WCF robustas y de ejecución prolongada.

A menudo, los programadores de WCF deben decidir si hospedar su aplicación de WCF dentro de una aplicación de servicios de Windows o dentro del entorno de hospedaje de Internet Information Services (IIS) o Windows Process Activation Service (WAS). Debería considerar el uso de aplicaciones de servicios de Windows bajo las siguientes condiciones:

  • Su aplicación requiere la activación explícita. Por ejemplo, debería utilizar los servicios de Windows cuando su aplicación se deba iniciar automáticamente cuando el servidor se inicie en lugar de iniciarse dinámicamente en respuesta al primer mensaje entrante.
  • El proceso que hospeda su aplicación debe seguir ejecutándose una vez iniciado. Una vez iniciado, un proceso de servicio de Windows permanece ejecutándose a menos que sea cerrado explícitamente por parte de un administrador del servidor mediante el administrador de control de servicios. Las aplicaciones hospedadas en IIS o WAS se pueden iniciar y detener dinámicamente para realizar un uso óptimo de los recursos del sistema. Las aplicaciones que requieren el control explícito sobre la duración de su proceso de hospedaje deberían utilizar los servicios de Windows en lugar de IIS o WAS.
  • Su servicio de WCF debe ejecutarse en Windows Server 2003 y usar transportes que no sean HTTP. En Windows Server 2003, el entorno de hospedaje de IIS 6.0 está restringido sólo a la comunicación HTTP. Las aplicaciones de servicio de Windows no están sujetas a esta restricción y pueden utilizar cualquier transporte que WCF admita, incluyendo net.tcp, net.pipe y net.msmq.

Hospedaje de WCF dentro de una aplicación de servicio de Windows

  1. Cree una aplicación de servicio de Windows. Puede escribir aplicaciones de servicio de Windows mediante código administrado utilizando las clases del espacio de nombres System.ServiceProcess. Esta aplicación debe incluir una clase que herede a partir de ServiceBase.

  2. Vincule la duración de los servicios de WCF a la duración de la aplicación de servicio de Windows. Normalmente, desea que los servicios de WCF hospedados en una aplicación de servicio de Windows se activen cuando se inicia el servicio de hospedaje, dejen de realizar escuchas de mensajes cuando se detiene el servicio de hospedaje y cierren el proceso de hospedaje cuando el servicio de WCF encuentre un error. Esto se puede lograr de la siguiente manera:

    • Invalide OnStart para abrir una o más instancias de ServiceHost. Una única aplicación de servicio de Windows puede hospedar varios servicios de WCF que se inician y se detienen como un grupo.
    • Invalide OnStop para llamar Closed en el ServiceHost cualquier servicio de WCF en ejecución que se inició durante OnStart.
    • Suscríbase al evento Faulted de ServiceHost y utilice la clase ServiceController para cerrar la aplicación de servicio de Windows en caso de error.

    Las aplicaciones de servicio de Windows que hospedan servicios de WCF se implementan y administran de la misma manera que las aplicaciones de servicio de Windows que no utilizan WCF.

Consulte también

Tareas

Hospedaje de un servicio WCF en un servicio administrado de Windows

Referencia

System.ServiceProcess

Otros recursos

Windows Service Host
Walkthrough: Creating a Windows Service Application in the Component Designer
Service Application Programming Architecture