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 se inicie el equipo, convirtiéndolo en un entorno de hospedaje apropiado para aplicaciones que siempre deban estar en funcionamiento. Para más información sobre las aplicaciones de servicios de Windows, consulte Aplicaciones de servicios de Windows.

Las aplicaciones que hospedan servicios de Windows Communication Foundation (WCF) de larga duración 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, el hospedaje de servicios de WCF dentro de una aplicación de servicios de Windows constituye una opción para crear 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 solo a la comunicación HTTP. Las aplicaciones de servicios de Windows no están sujetas a esta restricción y pueden utilizar cualquier transporte que WCF admita, incluido net.tcp, net.pipe y net.msmq.

Instrucciones

  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 servicios de Windows. Normalmente, se quiere que los servicios de WCF hospedados en una aplicación de servicios de Windows se activen cuando se inicia el servicio de hospedaje, dejen de realizar escuchas de mensajes cuando este se detiene y cierren el proceso de hospedaje cuando el servicio de WCF encuentre un error. Esto se puede lograr de la siguiente manera:

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

Consulte también