Compartilhar via


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

  1. Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. 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.

  3. 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.

  4. 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.

Confira também