Host de servicio de Windows
En el ejemplo WindowsService se muestra un servicio de Windows Communication Foundation (WCF) hospedado en un servicio de Windows administrado. Los servicios de Windows se controlan con el applet Servicios en el Panel de control y pueden configurarse para que se inicien automáticamente después de un reinicio del sistema. El ejemplo está compuesto de un programa cliente y un programa de servicio de Windows. El servicio se implementa como un programa .exe y contiene su propio código de hospedaje. No es necesario que escriba el código de hospedaje en otros entornos de hospedaje, como los Servicios de activación de procesos de Windows (WAS) o Internet Information Services (IIS).
Nota
El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.
Después de compilar este servicio, se debe instalar con la utilidad Installutil.exe como cualquier otro servicio de Windows. Si va a realizar cambios en el servicio, deberá desinstalarlo primero con installutil /u
. Los archivos Setup.bat y Cleanup.bat incluidos en este ejemplo son los comandos para instalar e iniciar el servicio de Windows, y para apagar y desinstalar el servicio de Windows. El servicio WCF solo puede responder a los clientes si el servicio de Windows se está ejecutando. Si detiene el servicio de Windows con el applet Servicios en el Panel de control y ejecuta el cliente, se producirá una excepción EndpointNotFoundException cuando un cliente intente acceder al servicio. Si reinicia el servicio de Windows y vuelve a ejecutar el cliente, la comunicación se produce correctamente.
El código del servicio incluye una clase del instalador, una clase de implementación de servicio WCF que implementa el contrato de ICalculator, y una clase de servicio de Windows que actúa como el host en tiempo de ejecución. La clase del instalador, que hereda de Installer, permite instalar el programa como un servicio de NT por la herramienta Installutil.exe. La clase de implementación de servicio, WcfCalculatorService
, es un servicio WCF que implementa un contrato de servicios básico. Este servicio WCF se hospeda dentro de una clase de servicio de Windows llamada WindowsCalculatorService
. Para que sea calificada como un servicio de Windows, la clase hereda de ServiceBase e implementa los métodos OnStart(String[]) y OnStop(). En OnStart(String[]), se crea un objeto ServiceHost para el tipo WcfCalculatorService
y se abre. En OnStop(), ServiceHost se cierra llamando al método Close(TimeSpan) del objeto ServiceHost. La dirección base del host se configura con el elemento <add>, que es un elemento secundario de <baseAddresses>, que a su vez es un elemento secundario del elemento <host>, que a su vez es un elemento secundario del elemento <service>.
El punto de conexión que se define utiliza la dirección base y un enlace <wsHttpBinding>. El ejemplo siguiente muestra la configuración de la dirección base así como el extremo que expone CalculatorService.
<services>
<service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
</baseAddresses>
</host>
<!-- This endpoint is exposed at the base address provided by host: http://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
...
</service>
</services>
Al ejecutar el ejemplo, las solicitudes y las respuestas de operación se muestran tanto en la ventanas de la consola del cliente como del servicio. Presione Entrar en cada ventana de la consola para cerrar el servicio y el cliente.
Configurar, compilar y ejecutar el ejemplo
Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.
Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.
Una vez compilada la solución, ejecute Setup.bat desde un símbolo del sistema de Visual Studio con privilegios elevados para instalar el servicio de Windows con la herramienta Installutil.exe. El servicio debería aparecer en Servicios.
Para ejecutar el ejemplo en una configuración con un solo equipo o con varios, siga las instrucciones de los ejemplos de la ejecución de Windows Communication Foundation.