Compartilhar via


Hospedando um aplicativo de serviço do Windows

Os serviços do Windows (conhecidos anteriormente como serviços do Windows NT) fornecem um modelo de processo particularmente adequado para aplicativos que precisam residir em um executável de execução prolongada e não exibem nenhuma forma de interface do usuário. O tempo de vida do processo de um aplicativo de serviço do Windows é gerenciado pelo SCM (gerenciador de controle de serviço), que permite iniciar, parar e pausar aplicativos de serviço do Windows. Você pode configurar um processo de serviço do Windows para iniciar automaticamente quando o computador é iniciado, fazendo dele um ambiente de hospedagem adequado para aplicativos "Always On". Para obter mais informações sobre aplicativos de serviço do Windows, consulte Aplicativos de Serviço do Windows.

Aplicativos que hospedam serviços de execução prolongada do WCF (Windows Communication Foundation) compartilham muitas características com os serviços do Windows. Em particular, os serviços do WCF são executáveis de servidor de execução prolongada que não interagem diretamente com o usuário e, portanto, não implementam nenhuma forma de interface do usuário. Sendo assim, hospedar serviços WCF dentro de um aplicativo de serviço do Windows é uma opção para criar aplicativos do WCF robustos e de execução prolongada.

Muitas vezes, desenvolvedores do WCF precisam decidir se hospedam seus aplicativos WCF dentro de um aplicativo de serviço do Windows ou dentro do ambiente de hospedagem dos IIS (Serviços de Informações da Internet) ou do WAS (Serviço de Ativação de Processo do Windows). Considere usar aplicativos de serviço do Windows nas seguintes condições:

  • O aplicativo requer ativação explícita. Por exemplo, use os serviços do Windows quando seu aplicativo precisar ser iniciado automaticamente quando o servidor começar, em vez de ser iniciado dinamicamente em resposta à primeira mensagem de entrada.

  • O processo que hospeda o aplicativo precisa permanecer em execução uma vez iniciado. Uma vez iniciado, um processo de serviço do Windows permanece em execução, a menos que seja desligado explicitamente por um administrador do servidor usando o gerenciador de controle de serviço. Aplicativos hospedados no IIS ou no WAS podem ser iniciados e interrompidos dinamicamente para usar os recursos do sistema de maneira ideal. Aplicativos que exigem controle explícito do tempo de vida de seu processo de hospedagem devem usar serviços do Windows em vez do IIS ou do WAS.

  • O serviço WCF deve ser executado no Windows Server 2003 e usar transportes diferentes do HTTP. No Windows Server 2003, o ambiente de hospedagem do IIS 6.0 é restrito apenas à comunicação HTTP. Aplicativos de serviço do Windows não estão sujeitos a essa restrição e podem usar qualquer transporte compatível com o WCF, incluindo net.tcp, net.pipe e net.msmq.

Como fazer

  1. Crie um aplicativo de serviço do Windows. Você pode escrever aplicativos de serviço do Windows em código gerenciado usando as classes no namespace System.ServiceProcess. Esse aplicativo deve incluir uma classe que herda de ServiceBase.

  2. Vincule o tempo de vida dos serviços WCF ao tempo de vida do aplicativo de serviço do Windows. Normalmente, você quer que serviços WCF hospedados em um aplicativo de serviço do Windows fiquem ativos quando o serviço de hospedagem for iniciado, parem de escutar mensagens quando o serviço de hospedagem for interrompido e desliguem o processo de hospedagem quando o serviço WCF encontrar um erro. Isso pode ser feito da seguinte maneira:

    Aplicativos de serviço do Windows que hospedam serviços WCF são implantados e gerenciados da mesma forma que aplicativos de serviço do Windows que não usam o WCF.

Confira também