Partilhar via


Host de serviço do Windows

O exemplo 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 miniaplicativo Serviços no Painel de Controle e podem ser configurados para iniciar automaticamente após a reinicialização do sistema. O exemplo consiste em um programa cliente e um programa de serviço do 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 os Serviços de Ativação de Processos do Windows (WAS) ou os Serviços de Informações da Internet (IIS), não é necessário escrever código de hospedagem.

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

Depois de criar este serviço, ele deve ser instalado com o utilitário Installutil.exe como qualquer outro serviço do Windows. Se você vai fazer alterações no serviço, você deve primeiro desinstalá-lo 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 do Windows e para desligar e desinstalar o Serviço do Windows. O serviço WCF só pode responder aos clientes se o serviço do Windows estiver em execução. Se você parar o Serviço do Windows usando o miniaplicativo Serviços do Painel de Controle e executar o cliente, uma EndpointNotFoundException exceção ocorrerá quando um cliente tentar acessar o serviço. Se você reiniciar o serviço do 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 de serviço do Windows que atua como o host de tempo de execução. A classe do instalador, que herda do 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. Este serviço WCF é hospedado dentro de uma classe de serviço do Windows chamada WindowsCalculatorService. Para se qualificar como um serviço do Windows, a classe herda e ServiceBase implementa os OnStart(String[]) métodos e OnStop() . No OnStart(String[]), um ServiceHost objeto é criado para o WcfCalculatorService tipo e aberto. No OnStop(), o ServiceHost é fechado chamando o Close(TimeSpan) método do ServiceHost objeto. O endereço base do host é configurado usando o <elemento add>, que é filho de <baseAddresses>, que é filho do< elemento host>, que é filho do <elemento service.>

O ponto de extremidade definido usa o endereço base e um wsHttpBinding>.< O exemplo a seguir mostra a configuração do endereço base, 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 o exemplo, as solicitações de operação e as respostas são exibidas nas janelas do console de serviço e 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. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Depois que a solução tiver sido criada, execute Setup.bat a partir de um prompt de comando do Visual Studio com privilégios elevados para instalar o serviço do 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 Executando os exemplos do Windows Communication Foundation.

Consulte também