Serviços de hospedagem
Para se tornar ativo, um serviço deve ser hospedado em um ambiente run-time que o crie e controle seu contexto e tempo de vida. Os serviços do Windows Communication Foundation (WCF) são projetados para serem executados em qualquer processo do Windows que ofereça suporte a código gerenciado.
O WCF fornece um modelo de programação unificado para criar aplicativos orientados a serviços. Esse modelo de programação permanece consistente e independente do ambiente de tempo de execução no qual o serviço é implantado. Na prática, isso significa que o código para seus serviços parece o mesmo, qualquer que seja a opção de hospedagem.
Essas opções de hospedagem variam desde a execução dentro de um aplicativo de console até ambientes de servidor, como um serviço do Windows executado em um processo de trabalho gerenciado pelos Serviços de Informações da Internet (IIS) ou pelo Serviço de Ativação de Processos do Windows (WAS). Os desenvolvedores escolhem o ambiente de hospedagem que atende aos requisitos de implantação do serviço. Esses requisitos podem derivar da plataforma na qual o aplicativo é implantado, do transporte no qual ele deve enviar e receber mensagens ou do tipo de reciclagem do processo e outro gerenciamento de processo necessário para garantir a disponibilidade adequada ou de alguns outros requisitos de gerenciamento ou confiabilidade. A próxima seção fornece informações e orientações sobre as opções de hospedagem.
Opções de hospedagem
Auto-hospedagem em um aplicativo gerenciado
Os serviços WCF podem ser hospedados em qualquer aplicativo gerenciado. Essa é a opção mais flexível porque requer o mínimo de infraestrutura para implantação. Você incorpora o código do serviço no código do aplicativo gerenciado e, em seguida, cria e abre uma instância do ServiceHost para disponibilizar o serviço. Para obter mais informações, consulte Como: hospedar um serviço WCF em um aplicativo gerenciado.
Essa opção permite dois cenários comuns: serviços WCF executados dentro de aplicativos de console e aplicativos cliente avançados, como aqueles baseados em Windows Presentation Foundation (WPF) ou Windows Forms (WinForms). Hospedar um serviço WCF dentro de um aplicativo de console normalmente é útil durante a fase de desenvolvimento do aplicativo. Isso os torna fáceis de depurar, fáceis de obter informações de rastreamento para descobrir o que está acontecendo dentro do aplicativo e fáceis de mover copiando-os para novos locais. Essa opção de hospedagem também facilita a comunicação de aplicativos rich client, como aplicativos WPF e WinForms, com o mundo externo. Por exemplo, um cliente de colaboração ponto a ponto que usa o WPF para sua interface de usuário e também hospeda um serviço WCF que permite que outros clientes se conectem a ele e compartilhem informações.
Serviços Gerenciados do Windows
Esta opção de hospedagem consiste em registrar o domínio do aplicativo (AppDomain) que hospeda um serviço WCF como um serviço Windows gerenciado (anteriormente conhecido como serviço NT) para que o tempo de vida do processo do serviço seja controlado pelo gerenciador de controle de serviços (SCM) para serviços Windows. Assim como a opção de auto-hospedagem, esse tipo de ambiente de hospedagem requer que algum código de hospedagem seja escrito como parte do aplicativo. O serviço é implementado como um serviço do Windows e como um serviço WCF, fazendo com que ele herde da classe ServiceBase, bem como de uma interface de contrato de serviço WCF. O ServiceHost é então criado e aberto em um método OnStart(String[]) substituído e fechado em um método OnStop() substituído. Uma classe de instalador que herda de Installer também deve ser implementada para permitir que o programa seja instalado como um serviço do Windows pela ferramenta Installutil.exe. Para obter mais informações, consulte Como: hospedar um serviço WCF em um serviço do Windows gerenciado. O cenário habilitado pela opção de hospedagem do Windows Service gerenciado é o de um serviço WCF de longa execução hospedado fora do IIS em um ambiente seguro que não é ativado por mensagem. O tempo de vida do serviço é controlado pelo sistema operacional. Essa opção de hospedagem está disponível em todas as versões do Windows.
Serviços de Informações da Internet (IIS)
A opção de hospedagem do IIS é integrada ao ASP.NET e usa os recursos que essas tecnologias oferecem, como reciclagem de processos, desligamento ocioso, monitoramento da integridade do processo e ativação baseada em mensagens. Nos sistemas operacionais Windows XP e Windows Server 2003, essa é a solução preferencial para hospedar aplicativos de serviço da Web que devem ser altamente disponíveis e altamente escaláveis. O IIS também oferece a capacidade de gerenciamento integrada que os clientes esperam de um produto de servidor de classe empresarial. Essa opção de hospedando requer que o IIS esteja configurado corretamente, mas não requer que nenhum código de hospedagem seja escrito como parte do aplicativo. Para obter mais informações sobre como configurar a hospedagem do IIS para um serviço WCF, consulte Como: Hospedar um serviço WCF no IIS.
Os serviços hospedados no IIS só podem usar o transporte HTTP. Sua implementação no IIS 5.1 introduziu algumas limitações no Windows XP. A ativação baseada em mensagem fornecida para um serviço WCF pelo IIS 5.1 no Windows XP impede que qualquer outro serviço WCF auto-hospedado no mesmo computador use a porta 80 para se comunicar. Os serviços WCF podem ser executados no mesmo AppDomain/Application Pool/Worker Process que outros aplicativos quando hospedados pelo IIS 6.0 no Windows Server 2003. Mas como o WCF e o IIS 6.0 usam a pilha HTTP do modo kernel (HTTP.sys), o IIS 6.0 pode compartilhar a porta 80 com outros serviços WCF auto-hospedados em execução na mesma máquina, ao contrário do IIS 5.1.
Serviço de Ativação de Processos do Windows (WAS)
O Serviço de Ativação de Processos do Windows (WAS) é o novo mecanismo de ativação de processos para o Windows Server 2008 que também está disponível no Windows Vista. Ele mantém o modelo de processo familiar do IIS 6.0 (pools de aplicativos e ativação de processo baseada em mensagens) e recursos de hospedagem (como proteção rápida contra falhas, monitoramento de integridade e reciclagem), mas remove a dependência do HTTP da arquitetura de ativação. O IIS 7.0 usa o WAS para realizar a ativação baseada em mensagens por HTTP. Componentes WCF adicionais também se conectam ao WAS para fornecer ativação baseada em mensagens sobre os outros protocolos que o WCF suporta, como TCP, MSMQ e pipes nomeados. Isso permite que os aplicativos que usam protocolos de comunicação usem os recursos do IIS, como reciclagem de processos, proteção rápida contra falhas e o sistema de configuração comum que estava disponível apenas para aplicativos baseados em HTTP.
Essa opção de hospedagem requer que o WAS seja configurado corretamente, mas não exige que você escreva nenhum código de hospedagem como parte do aplicativo. Para obter mais informações sobre como configurar a hospedagem WAS, consulte Como: Hospedar um serviço WCF no WAS.
Escolha um ambiente de hospedagem
A tabela a seguir resume alguns dos principais benefícios e cenários associados a cada uma das opções de hospedagem.
Ambiente Hosting | Cenários comuns | Principais Benefícios e Limitações |
---|---|---|
Aplicativo Gerenciado ("Auto-hospedado") | - Aplicativos de console usados durante o desenvolvimento. - Aplicativos clientes ricos em WinForm e WPF acessando serviços. |
- Flexível. - Fácil de implantar. - Não é uma solução empresarial para serviços. |
Serviços do Windows (anteriormente conhecidos como serviços NT) | - Um serviço WCF de longa duração hospedado fora do IIS. | - Tempo de vida do processo de serviço controlado pelo sistema operacional, não ativado por mensagem. - Suportado por todas as versões do Windows. - Ambiente seguro. |
IIS 5.1, IIS 6.0 | - Executar um serviço WCF lado a lado com conteúdo ASP.NET na Internet usando o protocolo HTTP. | - Reciclagem de processos. - Desligamento ocioso. - Monitoramento da saúde do processo. - Ativação baseada em mensagens. - Apenas HTTP. |
Serviço de Ativação de Processos do Windows (WAS) | - Executar um serviço WCF sem instalar o IIS na Internet usando vários protocolos de transporte. | - IIS não é necessário. - Reciclagem de processos. - Desligamento ocioso. - Monitoramento da saúde do processo. - Ativação baseada em mensagens. - Funciona com HTTP, TCP, pipes nomeados e MSMQ. |
IIS 7.0 | - Executar um serviço WCF com conteúdo ASP.NET. - Executar um serviço WCF na Internet usando vários protocolos de transporte. |
- Benefícios WAS. - Integrado ao conteúdo do ASP.NET e do IIS. |
A escolha de um ambiente de hospedagem depende da versão do Windows na qual ele está implantado, dos transportes que requer para enviar mensagens e do tipo de processo e reciclagem de domínio de aplicativo que requer. A tabela a seguir resume os dados relacionados a esses requisitos.
Ambiente Hosting | Disponibilidade da plataforma | Transportes com suporte | Processo e Reciclagem do AppDomain |
---|---|---|---|
Aplicativo Gerenciado ("Auto-hospedado") | Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
No |
Serviços do Windows (anteriormente conhecidos como serviços NT) | Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
No |
IIS 5.1 | Windows XP | HTTP | Sim |
IIS 6,0 | Windows Server 2003 | HTTP | Sim |
Serviço de Ativação de Processos do Windows (WAS) | Windows Vista, Windows Server 2008 | HTTP, net.tcp, net.pipe, net.msmq |
Sim |
É importante observar que a execução de um serviço ou qualquer extensão de um host não confiável compromete a segurança. Além disso, ao abrir um ServiceHost sob representação, um aplicativo deve garantir que o usuário não esteja desconectado, por exemplo, armazenando em cache o WindowsIdentity do usuário.