Compartilhar via


Implantando um Serviço WCF hospedado do Internet Information Services dos Serviços de Informações da Internet

Desenvolver e implantar um serviço do WCF (Windows Communication Foundation) hospedado no IIS (Serviços de Informações da Internet) consiste nas seguintes tarefas:

  • Verificar se o IIS, o ASP.NET, o WCF e o componente de ativação do WCF estão instalados e registrados corretamente.

  • Crie um novo aplicativo do IIS ou reutilizar um existente do ASP.NET.

  • Crie um arquivo .svc para o serviço WCF.

  • Implantar a implementação do serviço para o aplicativo do IIS.

  • Configure o serviço WCF.

Para obter um passo a passo detalhado da criação de um serviço WCF hospedado pelo IIS, consulte Como hospedar um serviço WCF no IIS.

Verificar se o IIS, o ASP.NET, o WCF estão corretamente instalados e registrados

O WCF, o IIS e o ASP.NET precisam estar instalados para que os serviços WCF hospedados no IIS funcionem corretamente. Os procedimentos para instalar o WCF (como parte do .NET Framework), o ASP.NET e o IIS variam dependendo do sistema operacional. Para obter mais informações sobre como instalar o WCF e o .NET Framework, consulte Instalar o .NET Framework para desenvolvedores. Para instalar o IIS no Windows 10, abra Programas e Recursos no Painel de Controle e selecione Ativar ou desativar recursos do Windows. Em Recursos do Windows, selecione Serviços de Informações da Internet e escolha OK.

Windows Features with IIS highlighted

As instruções para instalar o IIS em outros sistemas operacionais podem ser encontradas em Instalar o IIS no Windows Vista e no Windows 7 e Instalar o IIS 8.5 no Windows Server 2012 R2.

O processo de instalação para do .NET Framework registrará automaticamente o WCF com o IIS se o IIS já estiver no computador. Se o IIS for instalado após .NET Framework, será necessária uma etapa adicional para registrar o WCF no IIS e no ASP.NET. Você pode fazer isso da seguinte maneira, dependendo do sistema operacional:

Criar um novo aplicativo do IIS ou reutilizar um existente do ASP.NET

Os serviços WCF hospedados no IIS devem residir em um aplicativo do IIS. Você pode criar um aplicativo do IIS para hospedar os serviços WCF exclusivamente. Como alternativa, você pode implantar um serviço WCF em um aplicativo existente que já esteja hospedando conteúdo do ASP.NET 2.0 (como páginas .aspx e serviços Web do ASP.NET [ASMX]). Para obter mais informações sobre essas opções, consulte as seções "Hospedando o WCF lado a lado com o ASP.NET" e "Hospedando serviços WCF no modo de compatibilidade do ASP.NET" em Serviços WCF e ASP.NET.

Observe que o IIS 6.0 e as versões posteriores reiniciam periodicamente um aplicativo isolado de programação orientada a objeto. O valor padrão é 1740 minutos. O valor máximo valor com suporte é 71.582 minutos. Esse reinício pode ser desabilitado. Para obter mais informações sobre essa propriedade, consulte PeriodicRestartTime.

Criar um arquivo .svc para o serviço WCF

Os serviços WCF hospedados no IIS são representados como arquivos de conteúdo especial (arquivos .svc) dentro do aplicativo do IIS. Esse modelo é semelhante à maneira como as páginas ASMX são representadas dentro de um aplicativo do IIS como arquivos .asmx. Um arquivo .svc contém uma diretiva de processamento específica do WCF (@ServiceHost) que permite que a infraestrutura que hospeda o WCF ative serviços hospedados em resposta às mensagens de entrada. A sintaxe mais comum para um arquivo .svc está na instrução a seguir.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

Ela é composta pela diretiva @ServiceHost e por um só atributo, Service. O valor do atributo Service é o nome do tipo CLR (Common Language Runtime) da implementação do serviço. Usar essa diretiva é basicamente equivalente a criar um host de serviço usando o código a seguir.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

A configuração de hospedagem adicional, como a criação de uma lista de endereços de base para o serviço também pode ser feita. Você também pode usar um ServiceHostFactory personalizado para estender a política para usar com soluções de hospedagem personalizadas. Os aplicativos do IIS que hospedam serviços WCF não são responsáveis por gerenciar a criação e o tempo de vida de instâncias do ServiceHost. A infraestrutura de hospedagem do WCF gerenciado cria dinamicamente a instância necessária do ServiceHost quando a primeira solicitação é recebida para o arquivo .svc. A instância não é liberada até que seja fechada explicitamente pelo código ou quando o aplicativo for reciclado.

Para obter mais informações sobre a sintaxe para arquivos .svc, consulte @ServiceHost.

Implantar a implementação do serviço para o aplicativo do IIS

Os serviços WCF hospedados no IIS usam o mesmo modelo de compilação dinâmica que o ASP.NET 2.0. Assim como ocorre com o ASP.NET, você pode implantar o código de implementação para os serviços WCF hospedados no IIS de várias maneiras em vários locais, da seguinte maneira:

  • Como um arquivo .dll pré-compilado localizado no GAC (cache de assembly global) ou no diretório \bin do aplicativo. Os binários pré-compilados não são atualizados até que uma nova versão da biblioteca de classe seja implantada.

  • Como arquivos de origem não compilados localizados no diretório \App_Code do aplicativo. Os arquivos de origem localizados nesse diretório são exigidos dinamicamente ao processar a primeira solicitação do aplicativo. As alterações nos arquivos no diretório \App_Code fazem o aplicativo inteiro ser reciclado e recompilado quando a próxima solicitação é recebida.

  • Como código não compilado diretamente no arquivo .svc. O código de implementação também pode ser localizado embutido no arquivo .svc do serviço, após a política @ServiceHost. As alterações ao código embutido fazem o aplicativo ser reciclado e recompilado quando a próxima solicitação é recebida.

Para obter mais informações sobre o modelo de compilação do ASP.NET 2.0, consulte Visão geral da compilação do ASP.NET.

Configurar o serviço WCF

Os serviços WCF hospedados no IIS armazenam dia configuração no arquivo Web.config do aplicativo. Os serviços hospedados no IIS usam os mesmos elementos e a sintaxe de configuração que os serviços WCF hospedados fora do IIS. No entanto, as seguintes restrições são exclusivas para o ambiente de hospedagem do IIS:

  • Endereços de base para serviços hospedados no IIS.

  • Os aplicativos que hospedam os serviços WCF fora do IIS podem controlar o endereço básico dos serviços que eles hospedam passando um conjunto de URIs de endereço básico para o construtor ServiceHost ou fornecendo um elemento <host> na configuração de serviço. Os serviços hospedados no IIS não têm a capacidade de controlar seu endereço de base; o endereço de base de um serviço hospedado no IIS é o endereço de seu arquivo .svc.

Endereços de ponto de extremidade para serviços hospedados no IIS

Quando estão hospedados no IIS, os endereços de ponto de extremidade são sempre considerados relativos para o endereço do arquivo .svc que representa o serviço. Por exemplo, se o endereço básico de um serviço WCF for http://localhost/Application1/MyService.svc com a seguinte configuração de ponto de extremidade:

<endpoint address="anotherEndpoint" />

Isso fornecerá um ponto de extremidade que pode ser alcançado em http://localhost/Application1/MyService.svc/anotherEndpoint.

Da mesma forma, o elemento de configuração do ponto de extremidade que usa uma cadeia de caracteres vazia como endereço relativo fornece um ponto de extremidade alcançável em http://localhost/Application1/MyService.svc, que é o endereço de base.

<endpoint address="" />

Você sempre deve usar endereços de ponto de extremidade relativos para pontos de extremidade de serviço hospedados no IIS. Fornecer um endereço de ponto de extremidade totalmente qualificado (por exemplo, http://localhost/MyService.svc) pode levar a erros na implantação do serviço se o endereço do ponto de extremidade não apontar para o aplicativo do IIS que hospeda o serviço que expõe o ponto de extremidade. Usar endereços de ponto de extremidade relativos para serviços hospedados evita esses conflitos em potencial.

Transportes disponíveis

Os serviços WCF hospedados no IIS 5.1 e no IIS 6.0 são restritos ao uso da comunicação baseada em HTTP. Nessas plataformas do IIS, configurar um serviço hospedado para usar uma associação não HTTP resulta em um erro durante a ativação do serviço. Para o IIS 7.0, os transportes com suporte incluem HTTP, Net.TCP, Net.Pipe, Net.MSMQ e msmq.formatname para compatibilidade retroativa com os aplicativos existentes do MSMQ.

Segurança de transporte de HTTP

Os serviços WCF hospedados no IIS podem utilizar a segurança de transporte HTTP (por exemplo, esquemas de autenticação de HTTPS e HTTP como Básico, Resumido e Autenticação Integrada do Windows), desde que o diretório virtual do IIS que contém os serviços dê suporte a essas configurações. As configurações de segurança de transporte de HTTP em uma associação do ponto de extremidade hospedado devem corresponder às configurações de segurança de transporte no diretório virtual do IIS que as contêm.

Por exemplo, um ponto de extremidade do WCF configurado para usar a autenticação resumida do HTTP deve residir em um diretório virtual do IIS que também seja configurado para permitir a autenticação resumida do HTTP. As combinações sem correspondência de configurações do IIS e configurações de ponto de extremidade do WCF resultam em um erro durante a ativação do serviço.

Confira também