Serviços de alojamento
Para se tornar ativo, um serviço deve ser hospedado em um ambiente de tempo de execução que o cria e controla seu contexto e tempo de vida. Os serviços WCF (Windows Communication Foundation) 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 muito igual, seja qual for 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 em execução em um processo de trabalho gerenciado pelo IIS (Serviços de Informações da Internet) ou pelo Serviço de Ativação de Processos do Windows (WAS). Os desenvolvedores escolhem o ambiente de hospedagem que satisfaz os 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 de processos e outros tipos de gerenciamento de processos necessários 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 opções de hospedagem.
Opções de alojamento
Auto-host em um aplicativo gerenciado
Os serviços WCF podem ser hospedados em qualquer aplicativo gerenciado. Esta é a opção mais flexível porque requer menos infraestrutura para implantar. Você incorpora o código para o serviço dentro do 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 em execução dentro de aplicativos de console e aplicativos rich client, como aqueles baseados no 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 com o mundo exterior de aplicativos rich client, como aplicativos WPF e WinForms. Por exemplo, um cliente de colaboração ponto a ponto que usa 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
Essa opção de hospedagem consiste em registrar o domínio do aplicativo (AppDomain) que hospeda um serviço WCF como um serviço gerenciado do Windows (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ço (SCM) para serviços do Windows. Como a opção de hospedagem automática, 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 dentro de um método substituído OnStart(String[]) e fechado dentro de um método substituído OnStop() . Uma classe de instalador herdada de também deve ser implementada Installer 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 gerenciado do Windows. O cenário habilitado pela opção de hospedagem do Serviço Windows 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. Em vez disso, o tempo de vida do serviço é controlado pelo sistema operacional. Esta opção de hospedagem está disponível em todas as versões do Windows.
Serviços de Informação 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 preferida para hospedar aplicativos de serviço Web que devem estar 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 hospedagem requer que o IIS esteja configurado corretamente, mas não requer que qualquer 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 de 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 mensagem) e os 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 mensagem via HTTP. Componentes adicionais do WCF também se conectam ao WAS para fornecer ativação baseada em mensagem sobre os outros protocolos suportados pelo WCF, 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 só estavam disponíveis para aplicativos baseados em HTTP.
Esta opção de hospedagem requer que o WAS esteja configurado corretamente, mas não requer que você escreva nenhum código de hospedagem como parte do aplicativo. Para obter mais informações sobre como configurar a hospedagem do 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 de hospedagem | Cenários Comuns | Principais Benefícios e Limitações |
---|---|---|
Aplicativo gerenciado ("auto-hospedado") | - Aplicações de consola utilizadas durante o desenvolvimento. - Rich WinForm e WPF aplicações cliente 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 ASP.NET conteúdo na Internet usando o protocolo HTTP. | - Reciclagem de processos. - Desligamento ocioso. - Monitoramento da integridade 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. | - O IIS não é necessário. - Reciclagem de processos. - Desligamento ocioso. - Monitoramento da integridade do processo. - Ativação baseada em mensagens. - Funciona com HTTP, TCP, pipes nomeados e MSMQ. |
IIS 7.0 | - Execução de um serviço WCF com conteúdo ASP.NET. - Execução de um serviço WCF na Internet usando vários protocolos de transporte. |
- Benefícios do WAS. - Integrado com conteúdo ASP.NET e IIS. |
A escolha de um ambiente de hospedagem depende da versão do Windows na qual ele é implantado, dos transportes necessários para enviar mensagens e do tipo de processo e reciclagem de domínio de aplicativo que ele exige. A tabela a seguir resume os dados relacionados a esses requisitos.
Ambiente de hospedagem | Disponibilidade da plataforma | Transportes suportados | Reciclagem de processos e AppDomain |
---|---|---|---|
Aplicações Geridas ("Self-Hosted") | Windows XP, Windows Server 2003, Windows Vista, 2008 Windows Server |
HTTP, net.tcp, net.pipe, net.msmq |
Não |
Serviços do Windows (anteriormente conhecidos como serviços NT) | Windows XP, Windows Server 2003, Windows Vista, 2008 Windows Server |
HTTP, net.tcp, net.pipe, net.msmq |
Não |
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 uma ServiceHost representação 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.