Hospedaje de un servicio WCF en un servicio administrado de Windows
Este tema describe los pasos básicos necesarios para crear un servicio de Windows Communication Foundation (WCF) hospedado por un servicio de Windows. El escenario está habilitado por la opción de hospedaje del servicio de Windows administrado que es un servicio de WCF de ejecución prolongada hospedado fuera de Internet Information Services (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.
Los servicios de Windows se pueden administrar con Microsoft.ManagementConsole.SnapIn en Microsoft Management Console (MMC) y pueden configurarse automáticamente para iniciar cuando el sistema arranca. 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 por Windows, de modo que la vida del proceso está controlada por el administrador de control de servicios (SCM) de los servicios de Windows.
El código del servicio incluye una implementación del contrato de servicios, una clase de Windows Service y una clase del instalador. La clase de implementación de servicio, CalculatorService, es un servicio WCF. CalculatorWindowsService es un servicio de Windows. Para certificarse como servicio de Windows, la clase hereda de ServiceBase e implementa los métodos OnStart y OnStop. En OnStart, se crea ServiceHost para el tipo CalculatorService y se abre. En OnStop, el servicio se detiene y se elimina. El host también es responsable de proporcionar una dirección base al host del servicio, que se ha configurado en los valores de la aplicación. La clase del instalador, que hereda de Installer, permite instalar el programa como un servicio de Windows mediante la herramienta Installutil.exe.
Construya el servicio y proporcione el código del hospedaje
Defina el contrato de servicios ICalculator utilizando una interfaz para el servicio de la calculadora del archivo Service.cs.
Implemente el contrato de servicios en una clase CalculatorService en el archivo Service.cs como un servicio de WCF, haciendo que herede de la interfaz WCF ICalculator.
Implemente el servicio de Windows haciendo que herede de la clase ServiceBase. Invalide el método OnStart para crear y abrir una instancia del ServiceHost. Invalide el método OnStop para cerrar la instancia de ServiceHost. Cree una instancia de la instancia CalculatorService y llámela "WCFWindowsServiceSample". Facilite un punto de entrada para la aplicación.
Cree una ProjectInstaller clase que herede de Installer y se marque con el RunInstallerAttribute establecido en true, para que el Instalador de acción personalizada de Visual Studio o InstallUtil.exe se invoque cuando se instale el ensamblado.
Proporcione la dirección base para el servicio mediante configuración.
Instale y ejecute el servicio.
Compile el servicio para generar la aplicación ejecutable Service.exe.
Escriba
installutil bin\service.exe
en el símbolo del sistema para instalar el servicio de Windows . (La herramienta se encuentra en el directorio de instalación de Microsoft.NET Framework si aún no se ha establecido la ruta de acceso a él). Escribaservices.msc
en el símbolo del sistema para tener acceso al Administrador de control de servicios (SCM). El servicio de WINDOWS debería aparecer en Servicios como "WCFWindowsServiceSample". El servicio de WCF sólo puede responder a los clientes si el servicio de WINDOWS se está ejecutando. Para iniciar el servicio, haga clic con el botón secundario en el SCM y seleccione "Iniciar" o escribanet start``WCFWindowsServiceSample
en el símbolo del sistema.Si realiza cambios en el servicio, debe detenerlo primero y desinstalarlo. Para detener el servicio, haga clic con el botón secundario en el SCM y seleccione "Stop" o escriba
net stop
WCFWindowsServiceSample
en el símbolo del sistema. Tenga en cuenta que si detiene el servicio de WINDOWS y, a continuación, ejecuta el cliente, se produce una excepción EndpointNotFoundException cuando un cliente intenta tener acceso al servicio. Para desinstalar el tipo de servicio de WINDOWS, escribainstallutil /u
bin\service.exe
en el símbolo del sistema.
Ejemplo
El siguiente código muestra el contenido del archivo Service.cs con el contrato, su implementación y la instalación del servicio de WINDOWS y el código de hospedaje.
Como la opción de "autohospedaje", el entorno de hospedaje del servicio de Windows requiere que algún código de hospedaje se escriba como parte de la aplicación. El servicio se implementa como un programa .exe y contiene su propio código de hospedaje. En otros entornos de hospedaje, como Windows Process Activation Service (WAS) que se hospedan en Internet Information Services (IIS), no es necesario para los programadores el escribir código de hospedaje.
Consulte también
Conceptos
Hospedaje en una aplicación administrada
Servicios de hospedaje