Compartilhar via


Serviços de hospedagem

Para se tornar ativo, um serviço deve ser hospedado em um ambiente de runtime que o crie e controle seu contexto e tempo de vida. Os serviços do WCF (Windows Communication Foundation) foram projetados para serem executados em qualquer processo do Windows que dê suporte ao código gerenciado.

O WCF fornece um modelo de programação unificado para a criação de aplicativos orientados a serviços. Esse modelo de programação permanece consistente e é independente do ambiente de runtime no qual o serviço é implantado. Na prática, isso significa que o código para seus serviços tem a mesma aparência seja qual for a opção de hospedagem.

Essas opções de hospedagem vão desde a execução dentro de um aplicativo de console até ambientes de servidor, como um serviço Windows em execução em um processo de trabalho gerenciado pelos Serviços de Informações da Internet (IIS) ou pelo Serviço de Ativação de Processo 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 de processo e outro gerenciamento de processo necessário para garantir a disponibilidade adequada ou em alguns outros requisitos de gerenciamento ou confiabilidade. A próxima seção fornece informações e diretrizes sobre as opções de hospedagem.

Opções de hospedagem

Self-Host em um aplicativo gerenciado

Os serviços do WCF podem ser hospedados em qualquer aplicativo gerenciado. Essa é a opção mais flexível porque requer a infraestrutura mínima para implantar. Você insere o código do serviço dentro do código do aplicativo gerenciado e, em seguida, cria e abre uma instância do ServiceHost serviço para disponibilizar o serviço. Para obter mais informações, consulte Como hospedar um serviço WCF em um aplicativo gerenciado.

Essa opção habilita dois cenários comuns: serviços WCF em execução dentro de aplicativos de console e aplicativos cliente avançados, como aqueles baseados no Windows Presentation Foundation (WPF) ou no 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 que aplicativos cliente avançados, como aplicativos WPF e WinForms, se comuniquem com o mundo exterior. Por exemplo, um cliente de colaboração ponto a ponto que usa o WPF para sua interface do 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 windows gerenciados

Essa 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 SCM (gerenciador de controle de serviço) 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 precisa 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 Gerenciado do Windows. O cenário habilitado pela opção de hospedagem gerenciada do Serviço Windows é 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 de 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 Web que devem estar altamente disponíveis e altamente escaloná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 pelo 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 bloqueia qualquer outro serviço WCF auto-hospedado no mesmo computador de usar a porta 80 para se comunicar. Os serviços do WCF podem ser executados no mesmo AppDomain/Application Pool/Processo de Trabalho 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 no modo kernel (HTTP.sys), o IIS 6.0 pode compartilhar a porta 80 com outros serviços WCF auto-hospedados em execução no mesmo computador, ao contrário do IIS 5.1.

Serviço de Ativação de Processo do Windows (WAS)

O WAS (Serviço de Ativação de Processo do Windows) é o novo mecanismo de ativação de processo 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 baseado em mensagens) e os recursos de hospedagem (como proteção rápida contra falhas, monitoramento de integridade e reciclagem), mas remove a dependência em HTTP da arquitetura de ativação. O IIS 7.0 usa 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 nos outros protocolos aos quais o WCF dá suporte, como TCP, MSMQ e named pipes. Isso permite que 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ó estava disponível para aplicativos baseados em HTTP.

Essa opção de hospedagem requer que WAS esteja 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.

Escolher 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") – 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 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.
– Compatível com todas as versões do Windows.
– Ambiente seguro.
IIS 5.1, IIS 6.0 - Executando um serviço WCF simultaneamente com o conteúdo ASP.NET na Internet usando o protocolo HTTP. – Processo de reciclagem.
- Desligamento ocioso.
- Monitoramento da saúde do processo.
- Ativação baseada em mensagem.
- Somente HTTP.
Serviço de Ativação de Processo 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.
– Processo de reciclagem.
- Desligamento ocioso.
- Monitoramento da saúde do processo.
- Ativação baseada em mensagem.
- Funciona com HTTP, TCP, pipes nomeados e MSMQ.
IIS 7.0 – Executando um serviço WCF com conteúdo ASP.NET.
– Executando um serviço WCF na Internet usando vários protocolos de transporte.
- Benefícios do 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 é implantado, dos transportes necessários para enviar mensagens e do tipo de processo e da reciclagem de domínio do aplicativo necessários. A tabela a seguir resume os dados relacionados a esses requisitos.

Ambiente de hospedagem Disponibilidade da plataforma Transportes com suporte Processamento e Reciclagem de AppDomain
Aplicativos Gerenciados ("Hospedado Internamente") Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
Não
Serviços windows (anteriormente conhecidos como serviços NT) Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
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 Processo 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.

Consulte também