Compartir a través de


Implementación de un servicio WFC hospedado en Internet Information Services

El desarrollo e implementación de un servicio de Windows Communication Foundation (WCF) que se hospeda en Internet Information Services (IIS) consta de las tareas siguientes:

  • Asegurarse de que IIS, WCFy el componente de activación de WCF se instalan y registran correctamente.
  • Crear una nueva aplicación de IIS o reutilizar una aplicación de ASP.NET existente.
  • Crear un archivo .svc para el servicio de WCF.
  • Implementar la implementación de servicio en la aplicación IIS.
  • Configurar el servicio de WCF.

Para obtener un tutorial detallado para crear un servicio de WCF hospedado en IIS, consulte Procedimiento para hospedar un servicio WCF en IIS.

Asegurarse de que IIS y WCF se instalan y registran correctamente

WCF e IIS se deben instalar para que los servicios de WCF alojados en IIS funcionen correctamente. Los procedimientos para instalar WCF (como parte de .NET Framework 3,0) e IIS varían en función de la versión del sistema operativo que se use. Para obtener más información acerca de la instalación de WCF y .NET Framework 3,0, consulte Microsoft .NET Framework 3.0 Redistributable Package. Se pueden encontrar instrucciones para la instalación de IIS en Instalación de IIS.

El proceso de instalación del .NET Framework 3,0 registra automáticamente a WCF con IIS si IIS ya está presente en el equipo. Si IIS se instala después del .NET Framework 3,0, se requiere un paso adicional para registrar a WCF con IIS y ASP.NET. Puede hacer esto de la siguiente manera, dependiendo de su sistema operativo:

  • Windows XP SP2 y Windows Server 2003: utilice la herramienta ServiceModelReg.exe para registrar WCF con IIS. Para utilizar esta herramienta, escriba ServiceModelReg.exe /i /x en un símbolo del sistema.
  • Windows Vista: instale el subcomponente Componentes de activación de Windows Communication Foundation de .NET Framework 3,0. Para ello, en el Panel de control, haga clic en Agregar o quitar programas y, a continuación, en Agregar o quitar componentes de Windows. Esto activa el Asistente para componentes de Windows.

Cree una nueva aplicación de IIS o reutilice una aplicación de ASP.NET existente

Los servicios de WCF hospedados en IIS deben residir dentro de una aplicación IIS. Puede crear una nueva aplicación IIS para hospedar exclusivamente servicios de WCF. De manera alternativa, puede implementar un servicio de WCF en una aplicación existente que ya esté hospedando contenido ASP.NET 2.0 (como páginas .aspx y servicios web ASP.NET [ASMX]). Para obtener más información acerca de estas opciones, vea las secciones "Hospedaje de WCF en paralelo con ASP.NET" y "Hospedaje de servicios WCF en Modo de compatibilidad de ASP.NET" en Servicios WCF y ASP.NET.

Observe que IIS 6.0 y versiones posteriores reinician periódicamente una aplicación de programación orientada a objetos aislada. El valor predeterminado es de 1740 minutos. El valor máximo admitido son 71.582 minutos. Este reinicio se puede deshabilitar. Para obtener más información acerca de esta propiedad, consulte PeriodicRestartTime.

Cree un archivo .svc para el servicio de WCF.

Los servicios de WCF hospedados en IIS se representan como archivos de contenido especial (archivos .svc) dentro de la aplicación IIS. Este modelo es similar a la manera en que se representan las páginas ASMX dentro de una aplicación IIS como archivos .asmx. Un archivo .svc contiene una directiva de procesamiento específica de WCF (@ServiceHost) que permite a la infraestructura de hospedaje de WCF activar servicios hospedados en respuesta a los mensajes entrantes. La sintaxis más común para un archivo .svc se encuentra en la instrucción siguiente.

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

Consta de la directiva @ServiceHost y un atributo único, Service. El valor del atributo Service es el nombre del tipo de Common Language Runtime (CLR) de la implementación del servicio. El uso de esta directiva es básicamente equivalente a crear un host de servicio mediante el uso del código siguiente.

      new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

La configuración de hospedaje adicional, como el crear una lista de direcciones base, también puede realizarse. También puede utilizar un ServiceHostFactory personalizado para extender la directiva para el uso con soluciones de hospedaje personalizadas. Las aplicaciones IIS que hospedan servicios de WCF no son responsables de administrar la creación y duración de las instancias de ServiceHost. La infraestructura de hospedaje de WCF administrada crea dinámicamente la instancia de ServiceHost necesaria cuando se recibe la primera solicitud para el archivo .svc. La instancia no se libera hasta que se cierre explícitamente mediante código o cuando se recicle la aplicación.

Para obtener más información acerca de la sintaxis de los archivos .svc, vea @ServiceHost.

Implementación de la implementación de servicio en la aplicación IIS

Los servicios de WCF alojados en IIS usan el mismo modelo de compilación dinámica que ASP.NET 2.0. Al igual que con ASP.NET, puede implementar el código de implementación para servicios de WCF hospedados en IIS de varias maneras en varias ubicaciones, tal y como sigue:

  • Como un archivo .dll precompilado ubicado en la caché de ensamblados global (GAC) o en el directorio \bin de la aplicación. Los binarios precompilados no se actualizan hasta que una nueva versión de la biblioteca de clases se implemente.
  • Como archivos de código fuente sin compilar situados en el directorio \App_Code de la aplicación. Los archivos de código fuente ubicados en este directorio se requieren dinámicamente al procesar la primera solicitud de la aplicación. Cualquier cambio en los archivos en el directorio \App_Code hace que se recicle y recompile la aplicación al completo cuando se recibe la siguiente solicitud.
  • Como código sin compilar colocado directamente en el archivo .svc. El código de implementación también se puede encontrar integrado en el archivo .svc del servicio, después de la directiva @ServiceHost. Los cambios realizados en el código integrado hacen que la aplicación se recicle y vuelva a compilarse cuando se recibe la siguiente solicitud.

Para obtener más información acerca de el ASP.NET 2.0 modelo de compilación, vea Información general de compilación de ASP.NET.

Configuración del servicio WCF

Los servicios de WCF alojados en IIS almacenan su configuración en el archivo Web.config de aplicaciones. Los servicios alojados en IIS utilizan los mismos elementos de configuración y sintaxis que los servicios de WCF hospedados fuera de IIS. Sin embargo, las siguientes restricciones son únicas del entorno de hospedaje de IIS:

  • Direcciones base para servicios hospedados en IIS.
  • Las aplicaciones que hospedan servicios de WCF fuera de IIS pueden controlar la dirección base de los servicios que hospedan pasando un conjunto de identificadores URI de direcciones base al constructor ServiceHost o proporcionando un elemento <host> en la configuración del servicio. Los servicios hospedados en IIS no tienen la capacidad de controlar sus direcciones base; la dirección base de un servicio hospedado en IIS es la dirección de su archivo .svc.

Direcciones de extremos para servicios hospedados en IIS

Cuando se hospeda en IIS, las direcciones de extremo siempre se considera que son relativas a la dirección del archivo .svc que representa al servicio. Por ejemplo, si la dirección base de un servicio de WCF es https://localhost/Application1/MyService.svc con la siguiente configuración de extremo.

<endpoint address=”anotherEndpoint” … />

Esto proporciona un extremo que se puede alcanzar en "https://localhost/Application1/MyService.svc/anotherEndpoint".

De forma similar, el elemento de configuración de extremo que utiliza una cadena vacía como dirección relativa proporciona un extremo alcanzable en https://localhost/Application1/MyService.svc, que es la dirección base.

<endpoint address=”” … />

Siempre debe utilizar direcciones de extremo relativas para los extremos de servicio hospedados en IIS. Proporcionar una dirección de extremo completa (por ejemplo, https://localhost/MyService.svc) puede llevar a errores en la implementación del servicio si la dirección del extremo no señala a la aplicación IIS que hospeda el servicio que expone el extremo. El uso de direcciones de extremo relativas para servicios hospedados evita estos posibles conflictos.

Transportes disponibles

Los de servicios WCF hospedados en IIS 5.1 e IIS 6.0 están limitados a utilizar la comunicación basada en HTTP. En estas plataformas de IIS, configurar un servicio hospedado para utilizar un enlace no HTTP genera un error durante la activación del servicio. Para IIS 7.0, entre los transportes admitidos se incluyen HTTP, Net.TCP, Net.Pipe, Net.MSMQ y msmq.formatname para la compatibilidad con versiones anteriores con respecto a aplicaciones MSMQ existentes.

Seguridad de transporte HTTP

Los servicios de WCF hospedados en IIS pueden utilizar la seguridad del transporte HTTP (por ejemplo, esquemas de autenticación HTTP y HTTPS, como Basic, Digest y Windows Integrated Authentication) siempre que el directorio virtual de IIS que contiene el servicio admita esos valores. Los valores de seguridad de transporte HTTP de un enlace del extremo hospedado deben coincidir con los valores de seguridad de transporte del directorio virtual de IIS que lo contenga.

Por ejemplo, un extremo de WCF configurado para utilizar la autenticación implícita de HTTP debe residir en un directorio virtual de IIS que también esté configurado para permitir la autenticación implícita HTTP. Las combinaciones que no coincidan de los valores de IIS y los valores de extremos de WCF producen un error durante la activación del servicio.

Consulte también

Conceptos

Hospedaje en Internet Information Services
Procedimientos recomendados de hospedaje de Internet Information Services