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
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
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.
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.
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.