Host de serviço do Windows
O exemplo do WindowsService demonstra um serviço WCF (Windows Communication Foundation) hospedado em um Serviço Windows gerenciado. Os Serviços Windows são controlados usando o applet de Serviços em Painel de Controle, e podem ser configurados para iniciar automaticamente após uma reinicialização do sistema. O exemplo consiste em um programa cliente e um programa do Serviço Windows. O serviço é implementado como um aplicativo de console e contém seu próprio código de hospedagem. Em outros ambientes de hospedagem, como o WAS (Serviço de Ativação de Processos do Windows) ou o IIS (Serviços de Informações da Internet), não é necessário que você crie código de hospedagem.
Observação
Os procedimentos de instalação e as instruções de compilação para esse exemplo estão localizadas no final deste tópico.
Depois de criar esse serviço, ele deve ser instalado com o utilitário Installutil.exe como qualquer outro Serviço Windows. Se você for fazer alterações no serviço, desinstale-o primeiro com installutil /u
. Os arquivos Setup.bat e Cleanup.bat incluídos neste exemplo são os comandos para instalar e iniciar o Serviço Windows e desligar e desinstalar o Serviço Windows. O serviço WCF só poderá responder aos clientes se o Serviço Windows estiver em execução. Se você parar o Serviço Windows usando o applet de Serviços do Painel de Controle e executar o cliente, ocorrerá uma exceção EndpointNotFoundException quando um cliente tentar acessar o serviço. Se você reiniciar o Serviço Windows e executar novamente o cliente, a comunicação terá êxito.
O código de serviço inclui uma classe de instalador, uma classe de implementação de serviço WCF que implementa o contrato ICalculator e uma classe do Serviço Windows que atua como o host em tempo de execução. A classe de instalador, que herda de Installer, permite que o programa seja instalado como um serviço NT pela ferramenta Installutil.exe. A classe de implementação de serviço, WcfCalculatorService
, é um serviço WCF que implementa um contrato de serviço básico. Esse serviço WCF é hospedado dentro de uma classe do Serviço Windows chamada WindowsCalculatorService
. Para qualificar-se como um Serviço Windows, a classe herda de ServiceBase e implementa os métodos OnStart(String[]) e OnStop(). Em OnStart(String[]), um objeto ServiceHost é criado para o tipo WcfCalculatorService
e é aberto. Em OnStop(), o ServiceHost é fechado chamando o método Close(TimeSpan) do objeto ServiceHost. O endereço básico do host é configurado usando o elemento <add>, que é um filho de <baseAddresses>, que por sua vez é um filho do elemento <host>, que é um filho do elemento de <serviço>.
O ponto de extremidade definido usa o endereço básico e um <wsHttpBinding>. O exemplo a seguir mostra a configuração do endereço básico, bem como o ponto de extremidade que expõe o 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>
Quando você executa a amostra, as solicitações de operação e as respostas são exibidas no serviço e na janela do console do cliente. Pressione ENTER em cada janela do console para desligar o serviço e o cliente.
Para configurar, compilar, e executar o exemplo
Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.
Para compilar a edição C# ou do Visual Basic .NET da solução, siga as instruções em Como compilar o exemplos do Windows Communication Foundation.
Depois que a solução for criada, execute Setup.bat de um prompt de comando do Visual Studio com privilégios elevados para instalar o Serviço Windows usando a ferramenta Installutil.exe. O serviço deve aparecer em Serviços.
Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Como executar os exemplos do Windows Communication Foundation.