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 gerenciado do Windows. Os Serviços do Windows são controlados usando o applet dos Serviços no 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 programa .exe e contém seu próprio código de hospedagem. Em outros ambientes de hospedagem, como o WAS (Serviços de Ativação de Processo do Windows) ou o IIS (Serviços de Informações da Internet), não é necessário escrever código de hospedagem.

Observação

O procedimento de configuração e as instruções de build para este exemplo estão localizados 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ê quiser fazer alterações no serviço, primeiro desinstale-o 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 serviços do Painel de Controle e executar o cliente, ocorrerá uma EndpointNotFoundException exceção quando um cliente tenta acessar o serviço. Se você reiniciar o Serviço Windows e executar novamente o cliente, a comunicação será bem-sucedida.

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 do instalador, da qual herda Installer, permite que o programa seja instalado como um serviço NT pela ferramenta Installutil.exe. A classe de implementação de serviço é WcfCalculatorServiceum 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 se qualificar 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. No OnStop(), o ServiceHost é fechado ao chamar o método Close(TimeSpan) do objeto ServiceHost. O endereço base do host é configurado usando o <elemento> de adição, que é filho de <baseAddresses>, que é filho de <elemento> host, que é filho do elemento <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 base, bem como o endpoint que expõe o serviço de calculadora.

<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 o exemplo, as solicitações e respostas da operação são exibidas nas janelas do serviço e 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 avulsa dos exemplos do Windows Communication Foundation.

  2. Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.

  3. Depois que a solução for criada, execute Setup.bat de um prompt de comando elevado do Visual Studio para instalar o serviço Windows usando a ferramenta Installutil.exe. O serviço deve aparecer nos Serviços.

  4. Para executar o exemplo em uma configuração de computador único ou cruzado, siga as instruções em Executar os exemplos do Windows Communication Foundation.

Consulte também