Descripción de sitios, aplicaciones y directorios virtuales en IIS 7

de Reagan Templin

Introducción

En IIS, puede crear sitios, aplicaciones y directorios virtuales para compartir información con usuarios a través de Internet, una intranet o una extranet. Aunque estos conceptos existían en versiones anteriores de IIS, varios cambios en IIS 7 y versiones posteriores afectan a la definición y funcionalidad de estos conceptos. Lo más importante es que los sitios, las aplicaciones y los directorios virtuales ahora funcionan juntos en una relación jerárquica como los bloques de creación básicos para hospedar contenido en línea y proporcionar servicios en línea.

En este artículo se proporciona información general rápida sobre las aplicaciones en IIS 6.0 para que pueda comprender mejor las diferencias introducidas en IIS 7. A continuación, se explican los conceptos de sitios, aplicaciones y directorios virtuales en IIS y se presenta la sección <sites> de configuración.

Acerca de sitios, aplicaciones y directorios virtuales en IIS 6.0

En IIS 6.0, los conceptos de directorios virtuales y aplicaciones eran confusos. Aunque se trataron como conceptos independientes (y eran conceptualmente diferentes desde el punto de vista de la funcionalidad), una aplicación no era un objeto físicamente independiente de un directorio virtual. En IIS 6.0, una aplicación era realmente un directorio virtual con una o una combinación de las siguientes propiedades en la metabase: AppFriendlyName, AppRoot, AppIsolated y AppPoolID.

Nota:

La raíz del sitio es una excepción, ya que se trataba implícitamente como una aplicación incluso si no se establecieron esas propiedades.

Las aplicaciones eran menos importantes para IIS que para las tecnologías que amplían la funcionalidad del servidor web, como páginas de servidor activo (ASP), interfaz de programación de aplicaciones de servidor de Internet (ISAPI) y ASP.NET. Estas tecnologías proporcionan características y procesamiento adicionales para las aplicaciones hospedadas en IIS 6.0 y permiten a los desarrolladores crear aplicaciones más complejas. La cuestión importante para IIS 6.0 era aislar estas aplicaciones de manera que se impidiese que las aplicaciones de un grupo de aplicaciones afectaran a las aplicaciones de otro grupo de aplicaciones del servidor.

Acerca de sitios, aplicaciones y directorios virtuales en IIS 7 y versiones posteriores

IIS 7 y versiones posteriores formalizan los conceptos de sitios, aplicaciones y directorios virtuales. Los directorios virtuales y las aplicaciones ahora son objetos independientes y existen en una relación jerárquica en el esquema de configuración de IIS. Brevemente, un sitio contiene una o varias aplicaciones, una aplicación contiene uno o varios directorios virtuales y un directorio virtual se asigna a un directorio físico en un equipo.

Al igual que en IIS 6.0, un sitio contiene todo el contenido, tanto estático como dinámico, que está asociado a ese sitio. Sin embargo, cada sitio debe contener al menos una aplicación, que se denomina aplicación raíz. Y cada aplicación (incluida la aplicación raíz) debe contener al menos un directorio virtual, que se denomina directorio virtual raíz. Estos objetos trabajan juntos para formar el sitio.

Además, en IIS 7 y versiones posteriores, el concepto de aplicación ahora tiene significado tanto para IIS como para las tecnologías que amplían la funcionalidad de IIS. Una aplicación es un objeto importante para el servidor en runtime. Esto se debe a que las canalizaciones de procesamiento de solicitudes de IIS y ASP.NET se han combinado en IIS 7 y versiones posteriores para que el contenido pueda aprovechar las funciones proporcionadas que antes solo se ofrecía a las aplicaciones de código administrado. Por ejemplo, cada aplicación de código administrado se ejecuta en un dominio de aplicación (AppDomain). Una aplicación puede tener varios directorios virtuales y cada uno será servido por el mismo AppDomain que la aplicación a la que pertenecen.

En las siguientes secciones se explican sitios, aplicaciones, directorios virtuales y sus configuraciones relacionadas con más detalle.

Sitios

Un sitio es un contenedor para aplicaciones y directorios virtuales, y puede acceder a él a través de uno o varios enlaces únicos.

El enlace incluye dos atributos importantes para la comunicación: el protocolo de enlace y la información de enlace. El protocolo de enlace define el protocolo sobre el que se produce la comunicación entre el servidor y el cliente. La información de enlace define la información que se usa para acceder al sitio. Por ejemplo, el protocolo de enlace de un sitio web puede ser HTTP o HTTPS, y la información de enlace es la combinación de dirección IP, puerto y encabezado de host opcional.

Un sitio puede contener más de un enlace si el sitio requiere diferentes protocolos o información de enlace. En versiones anteriores de IIS, solo se admitían los protocolos HTTP y HTTPS. Por ejemplo, un sitio web podría haber tenido un enlace HTTP y un enlace HTTPS cuando las secciones del sitio requerían una comunicación segura a través de HTTPS.

En IIS 7 y versiones posteriores, los enlaces se pueden aplicar a cualquier protocolo. El servicio de activación de procesos de Windows (WAS) es el nuevo servicio que permite que IIS use protocolos adicionales. Este servicio conserva el modelo de procesos conocido de IIS 6.0, como los grupos de aplicaciones y la activación de procesos basada en mensajes, así como las características de hospedaje, como la protección rápida de errores, el seguimiento de estado y el reciclaje. Sin embargo, WAS quita la dependencia de HTTP de la arquitectura de activación. Esto es útil para las tecnologías que proporcionan comunicación de aplicación a aplicación en servicios web a través de protocolos estándar. El modelo de programación de Windows Communication Foundation (WCF) es una de estas tecnologías que puede habilitar la comunicación a través de los protocolos estándar del Protocolo de control de transmisión (TCP), Microsoft Message Queuing (MSMQ) y Canalizaciones con nombre. Esto permite a las aplicaciones que usan protocolos de comunicación aprovechar las ventajas de las características de IIS, como el reciclaje de procesos, la protección rápida por error y la configuración, que anteriormente solo estaban disponibles para las aplicaciones basadas en HTTP. Para obtener más información sobre el modelo de programación WCF, consulte Windows Communication Foundation en MSDN.

Además de contener aplicaciones (que contienen directorios virtuales) y especificar enlaces, los siguientes valores de configuración pertenecen al sitio:

  • Límites: configure las opciones para limitar la cantidad de ancho de banda, el número de conexiones o la cantidad de tiempo permitido para las conexiones a un sitio.
  • Registro: configure las opciones para controlar y almacenar archivos de registro para el sitio.
  • Registros de seguimiento de solicitudes con error: configure las opciones para registrar seguimientos de solicitudes con error para el sitio.

APLICACIONES

Una aplicación es un grupo de archivos que entrega contenido o proporciona servicios a través de protocolos, como HTTP. Al crear una aplicación en IIS, la ruta de acceso de la aplicación se convierte en parte de la dirección URL del sitio.

En IIS 7 y versiones posteriores, cada sitio debe tener una aplicación denominada aplicación raíz o aplicación predeterminada. Sin embargo, un sitio puede tener más de una aplicación. Por ejemplo, puede tener un sitio web de comercio en línea que tenga varias aplicaciones, como una aplicación de carro de la compra que permita a los usuarios recopilar elementos durante la compra y una aplicación de inicio de sesión que permita a los usuarios recuperar información de pago guardada cuando realicen una compra.

Además de pertenecer a un sitio, una aplicación pertenece a un grupo de aplicaciones, que aísla la aplicación de las aplicaciones de otros grupos de aplicaciones del servidor. En el caso de las aplicaciones de código administrado, asegúrese de asociar la aplicación junto con un grupo de aplicaciones que ejecute la versión de .NET Framework que requiere la aplicación.

Como se describe en la sección Sitios de este documento, IIS admite HTTP y HTTPS de forma predeterminada, pero puede usar protocolos adicionales. Para cada sitio, especifique uno o varios enlaces para comunicarse con el contenido y acceder a ellos en el sitio. Para que una aplicación se comunique mediante un protocolo especificado en el enlace del sitio primario, debe habilitar el protocolo. Para ello, especifique el protocolo en el atributo enabledProtocols para la aplicación, y asegúrese de que tiene el adaptador de agente de escucha adecuado en el servidor y especificado en la sección <listenerAdapters> de configuración.

Directorios virtuales

Un directorio virtual es un nombre de directorio (también denominado ruta de acceso) que se especifica en IIS y se asigna a un directorio físico en un servidor local o remoto. A continuación, el nombre del directorio forma parte de la dirección URL de la aplicación y los usuarios pueden solicitar la dirección URL desde un explorador para acceder al contenido del directorio físico, como una página web o una lista de directorios y archivos adicionales. Si especifica un nombre diferente para el directorio virtual que el directorio físico, es más difícil que los usuarios descubran la estructura de archivos física real en el servidor porque la dirección URL no se asigna directamente a la raíz del sitio.

En IIS 7 y versiones posteriores, cada aplicación debe tener un directorio virtual, denominado directorio virtual raíz, y que asigna la aplicación al directorio físico que contiene el contenido de la aplicación. Sin embargo, una aplicación puede tener más de un directorio virtual. Por ejemplo, puede usar un directorio virtual cuando quiera que la aplicación incluya imágenes de otra ubicación en el sistema de archivos, pero no desea mover los archivos de imagen al directorio físico asignado al directorio virtual raíz de la aplicación.

De forma predeterminada, IIS usa la configuración de los archivos Web.config del directorio físico al que se asigna el directorio virtual, así como en los directorios secundarios de ese directorio físico. Si no desea usar archivos Web.config en directorios secundarios, especifique false para el atributo allowSubDirConfig en el directorio virtual.

Si lo desea, cuando necesite especificar credenciales y un método para acceder al directorio virtual, puede especificar valores para los atributos nombre de usuario, contraseña y logonMethod.

Configuración de IIS: sección <sites>

Eche un vistazo a la sección <sites> predeterminada de IIS 7 y versiones posteriores. Esto es lo que se encuentra en el archivo ApplicationHost.config (ubicado en %windir%\system32\inetsrv\config\) después de instalar IIS en Windows Server® 2008.

<sites> 
    <site name="Default Web Site" id="1"> 
        <application path="/"> 
            <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" /> 
        </application> 
        <bindings> 
            <binding protocol="http" bindingInformation="*:80:" /> 
        </bindings> 
    </site> 
    <siteDefaults> 
        <logFile logFormat="W3C" directory="%SystemDrive%\inetpub\logs\LogFiles" /> 
        <traceFailedRequestsLogging directory="%SystemDrive%\inetpub\logs\FailedReqLogFiles" /> 
    </siteDefaults> 
    <applicationDefaults applicationPool="DefaultAppPool" /> 
    <virtualDirectoryDefaults allowSubDirConfig="true" /> 
</sites>

Cuando vea una sola "/" en un campo de ruta de acceso, sabrá que se trata de un objeto raíz. Dependiendo de si se encuentra en la sección aplicación o directorio virtual, es una aplicación raíz o un directorio virtual raíz.

Elementos predeterminados

En la siguiente sección se enumeran las colecciones y los elementos de la sección <sites> y su relación jerárquica dentro de la sección <sites>.

<sites> section 
<site> collection 
<bindings> collection 
<binding> element 
<clear> element 
<limits> element 
<logFile> element 
<traceFailedRequestsLogging> element 
<application> collection 
<virtualDirectory> collection 
<virtualDirectoryDefaults> element 
<applicationDefaults> element 
<virtualDirectoryDefaults> element 
<siteDefaults> element 
<bindings> collection 
<binding> element 
<clear> element 
<limits> element 
<logFile> element 
<traceFailedRequestsLogging> element 
<applicationDefaults> element 
<virtualDirectoryDefaults> element

Observe que hay dos elementos que aparecen en más de un lugar: el elemento <applicationDefaults> y el elemento <virtualDirectoryDefaults>. También hay un elemento <siteDefaults>, aunque solo aparece una vez porque solo se puede configurar en una ubicación de la sección <sites>. Los elementos predeterminados son especiales porque permiten configurar valores predeterminados para atributos en lugar de tener que repetir los mismos valores en cada colección.

Cuando se configura un atributo en más de un nivel, se usa el valor en el nivel más bajo. Por ejemplo, si especifica un valor predeterminado en un elemento <applicationDefaults> de la sección <sites> y en una colección <site>, se usará el valor de la colección <site>. Además, si el mismo atributo o elemento secundario está configurado en un elemento predeterminado y en la colección del objeto, se usará el valor de la colección. Por ejemplo, si configura un atributo en un elemento <applicationDefaults> y en una colección <application>, se usará el valor de la colección <application>.

En la tabla siguiente se especifica en qué elementos primarios se puede configurar un elemento <applicationDefaults> y se describe el efecto que tienen los valores en las aplicaciones.

Elemento primario Descripción
<sites> sección Especifica la configuración predeterminada para todas las aplicaciones del servidor.
Colección <site> Especifica la configuración predeterminada para todas las aplicaciones del sitio primario.

En la siguiente tabla se especifica en qué elementos primarios se puede configurar un elemento <virtualDirectoryDefaults> y se describe el efecto que tienen los valores en los directorios virtuales.

Elemento primario Descripción
<sites> sección Especifica la configuración predeterminada para todos los directorios virtuales del servidor.
Colección <site> Especifica la configuración predeterminada para todos los directorios virtuales del sitio primario.
Colección <application> Especifica la configuración predeterminada para todos los directorios virtuales de la aplicación.

Resumen

Ahora debería tener una mejor comprensión de sitios, aplicaciones y directorios virtuales en IIS 7 y versiones posteriores. A diferencia de IIS 6.0, las aplicaciones y los directorios virtuales se han convertido en objetos distintos en la configuración, lo que resalta su propósito único para el servidor web y su relación con el sitio. Además, los sitios ahora pueden contener aplicaciones que usan protocolos distintos de HTTP y HTTPS, que amplían la funcionalidad del sitio y conservan las ventajas del modelo de proceso introducido en IIS 6.0.

Para obtener más información sobre la arquitectura WAS e IIS, consulte Arquitectura de procesamiento de solicitudes de IIS en IIS.NET. Para obtener más información sobre las opciones de configuración que se describen en este artículo, consulte IIS 7 Configuración Schema en MSDN.