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, ASP.NET, WCF y el componente de activación de WCF se instalan y registran correctamente.

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

  • Cree 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, ASP.NET y WCF se instalen y registren correctamente

WCF, IIS y ASP.NET se deben instalar para que los servicios de WCF hospedados en IIS funcionen correctamente. Los procedimientos para instalar WCF (como parte de .NET Framework 3.0), ASP.NET e IIS varían en función de la versión del sistema operativo que se use. Para obtener más información sobre la instalación de WCF y .NET Framework 3.0, vea Microsoft .NET Framework 4.0 (Web Installer). 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, en función de su sistema operativo:

  • Windows XP SP2 y Windows Server 2003: use la herramienta Herramienta de registro de ServiceModel (ServiceModelReg.exe) para registrar WCF con IIS. Para usar 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.

Finalmente debe comprobar que ASP.NET se configura para utilizar la versión 4.0 de .NET Framework. Para ello, se ejecuta la herramienta ASPNET_Regiis con la opción –i. Para obtener más información, vea Herramienta Registro de IIS para ASP.NET

Crear una nueva aplicación de IIS o reutilizar 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 sobre 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 sobre 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 sobre 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 hospedados 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é global de ensamblados (GAC) o en el directorio \bin de la aplicación. Los binarios precompilados no se actualizan hasta que se implementa una nueva versión de la biblioteca de clases.

  • 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 solicitan dinámicamente al procesar la primera solicitud de la aplicación. Cualquier cambio en los archivos del 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 sobre el modelo de compilación de ASP.NET 2.0, vea Información general de compilación de ASP.NET.

Configuración del servicio WCF

Los servicios de WCF hospedados en IIS almacenan su configuración en el archivo Web.config de aplicaciones. Los servicios hospedados 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 la autenticación básica, implícita e integrada de Windows) 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.

Vea también

Conceptos

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

Otros recursos

Características de hospedaje de Windows Server App Fabric