Présentation des sites, applications et répertoires virtuels sur IIS 7

Auteur : Reagan Templin

Introduction

Dans IIS, vous pouvez créer des sites, des applications et des répertoires virtuels pour partager des informations avec des utilisateurs via Internet, un intranet ou un extranet. Bien que ces concepts existaient dans les versions antérieures d'IIS, plusieurs modifications apportées à IIS 7 et versions ultérieures affectent la définition et la fonctionnalité de ces concepts. Plus important encore, les sites, les applications et les répertoires virtuels fonctionnent désormais ensemble dans une relation hiérarchique en tant que blocs de construction de base pour l'hébergement de contenu en ligne et la fourniture de services en ligne.

Cet article fournit une vue d'ensemble rapide des applications dans IIS 6.0 afin de mieux comprendre les différences introduites dans IIS 7. Il explique ensuite les concepts des sites, des applications et des répertoires virtuels dans IIS et présente la section dans la section <sites> dans configuration.

À propos des sites, applications et répertoires virtuels dans IIS 6.0

Dans IIS 6.0, les concepts des répertoires virtuels et des applications étaient confus. Bien qu'ils aient été abordés comme des concepts distincts (et qu'ils étaient conceptuellement différents du point de vue des fonctionnalités), une application n'était pas un objet physiquement distinct d'un répertoire virtuel. Dans IIS 6.0, une application était vraiment un répertoire virtuel avec une ou une combinaison des propriétés suivantes dans la métabase : AppFriendlyName, AppRoot, AppIsolated, et AppPoolID.

Remarque

La racine du site est une exception, car elle a été implicitement traitée comme une application même si ces propriétés n'ont pas été définies.

Les applications étaient moins importantes pour IIS que pour les technologies qui étendaient les fonctionnalités de serveur Web, notamment Active Server Pages (ASP), l'interface ISAPI (Internet Server Application Programming Interface) et ASP.NET. Ces technologies ont fourni des fonctionnalités et un traitement supplémentaires pour les applications hébergées dans IIS 6.0 et ont permis aux développeurs de créer des applications plus complexes. La question importante pour IIS 6.0 était d'isoler ces applications d'une manière qui empêcherait les applications d'un pool d'applications d'affecter les applications dans un autre pool d'applications sur le serveur.

Sites, applications et répertoires virtuels dans IIS 7 et versions ultérieures

IIS 7 et versions ultérieures formalisent les concepts des sites, des applications et des répertoires virtuels. Les répertoires virtuels et les applications sont désormais des objets distincts et existent dans une relation hiérarchique dans le schéma de configuration IIS. Brièvement, un site contient une ou plusieurs applications, une application contient un ou plusieurs répertoires virtuels et un répertoire virtuel est mappé à un répertoire physique sur un ordinateur.

Comme dans IIS 6.0, un site contient tout le contenu, statique et dynamique, associé à ce site. Toutefois, chaque site doit contenir au moins une application appelée application racine. De plus, chaque application (y compris l'application racine) doit contenir au moins un répertoire virtuel, appelé répertoire virtuel racine. L'ensemble de ces objets forme le site.

En outre, dans IIS 7 et versions ultérieures, le concept d'une application a désormais une signification pour IIS et les technologies qui étendent les fonctionnalités IIS. Une application est un objet important pour le serveur au moment de l'exécution. Cela est dû au fait que les pipelines IIS et ASP.NET de traitement des demandes ont fusionné dans IIS 7 et versions ultérieures afin que le contenu puisse bénéficier des fonctionnalités précédemment fournies pour uniquement les applications de code managé. Par exemple, chaque application de code managé s'exécute dans un domaine d'application (AppDomain). Une application peut avoir plusieurs répertoires virtuels, et chacun d'eux sera servi par le même AppDomain que l'application à laquelle elles appartiennent.

Les sections suivantes expliquent plus en détail les sites, les applications, les répertoires virtuels et leurs configurations associées.

Sites

Un site est un conteneur pour les applications et les répertoires virtuels. Vous pouvez y accéder via une ou plusieurs liaisons uniques.

La liaison inclut deux attributs importants pour la communication : le protocole de liaison et les informations de liaison. Le protocole de liaison définit le protocole sur lequel se produit la communication entre le serveur et le client. Les informations de liaison définissent les informations utilisées pour accéder au site. Par exemple, le protocole de liaison d'un site Web peut être HTTP ou HTTPS, et les informations de liaison sont la combinaison de l'adresse IP, du port et de l'en-tête de l'hôte facultatif.

Un site peut contenir plusieurs liaisons si le site nécessite différents protocoles ou informations de liaison. Dans les versions antérieures d'IIS, seuls les protocoles HTTP et HTTPS ont été pris en charge. Par exemple, un site Web peut avoir eu à la fois une liaison HTTP et une liaison HTTPS lorsque des sections du site nécessitaient une communication sécurisée via HTTPS.

Dans IIS 7 et versions ultérieures, les liaisons peuvent s'appliquer à n'importe quel protocole. Le service WAS (Windows Process Activation Service) est le nouveau service qui permet à IIS d'utiliser des protocoles supplémentaires. Ce service conserve le modèle de processus d'IIS 6.0 bien connu, notamment les pools d'applications et l'activation du processus basé sur les messages, ainsi que les fonctionnalités d'hébergement dont la protection rapide contre les défaillances, la surveillance de l'intégrité et le recyclage. Toutefois, WAS supprime la dépendance sur HTTP de l'architecture d'activation. Cela est utile pour les technologies qui fournissent une communication d'application à application dans les services Web via des protocoles standard. Le modèle de programmation Windows Communication Foundation (WCF) est une technologie qui peut permettre la communication via les protocoles standard TCP (Transmission Control Protocol), Microsoft Message Queuing (MSMQ) et canaux nommés. Cela permet aux applications qui utilisent des protocoles de communication de tirer parti des fonctionnalités d'IIS comme le recyclage des processus, la protection rapide contre les défaillances et la configuration qui étaient auparavant uniquement disponibles pour les applications basées sur HTTP. Pour plus d'informations sur le modèle de programmation WCF, consultez Windows Communication Foundation sur MSDN.

En plus de contenir des applications (qui contiennent des répertoires virtuels) et de spécifier des liaisons, les paramètres de configuration suivants appartiennent au site :

  • Limites : configurez les paramètres pour limiter la quantité de bande passante, le nombre de connexions ou la durée autorisée pour les connexions à un site.
  • Journalisation : configurez les paramètres de gestion et de stockage des fichiers journaux pour le site.
  • Journaux de suivi des demandes ayant échoué : configurez les paramètres de journalisation des traces de demandes ayant échoué pour le site.

Applications

Une application est un groupe de fichiers qui fournissent du contenu ou fournissent des services sur des protocoles, tels que HTTP. Lorsque vous créez une application dans IIS, le chemin d'accès de l'application fait partie de l'URL du site.

Dans IIS 7 et versions ultérieures, chaque site doit avoir une application nommée application racine ou application par défaut. Toutefois, un site peut avoir plusieurs applications. Par exemple, vous pouvez avoir un site Web de commerce en ligne qui a plusieurs applications comme une application de panier d'achat qui permet aux utilisateurs de collecter des éléments pendant l'achat et une application de connexion qui permet aux utilisateurs de rappeler les informations de paiement enregistrées lorsqu'ils effectuent un achat.

En plus d'appartenir à un site, une application appartient à un pool d'applications, qui isole l'application des applications dans d'autres pools d'applications sur le serveur. Dans le cas d'applications de code managé, veillez à associer votre application à un pool d'applications exécutant la version de .NET Framework requise par votre application.

Comme décrit dans la section Sites de ce document, IIS prend en charge HTTP et HTTPS par défaut. Néanmoins, vous pouvez utiliser des protocoles supplémentaires. Pour chaque site, vous spécifiez une ou plusieurs liaisons pour communiquer avec le contenu du site et y accéder. Pour qu'une application communique à l'aide d'un protocole spécifié dans la liaison du site parent, vous devez activer le protocole. Pour ce faire, spécifiez le protocole dans l'attribut enabledProtocols pour l'application et vérifiez que vous disposez bien de l'adaptateur d'écouteur approprié sur le serveur et spécifié dans la section <listenerAdapters> dans la configuration.

Répertoires virtuels

Un répertoire virtuel est un nom de répertoire (également appelé chemin d'accès) que vous spécifiez dans IIS et mappé à un répertoire physique sur un serveur local ou distant. Le nom du répertoire fait ensuite partie de l'URL de l'application, et les utilisateurs peuvent demander l'URL à partir d'un navigateur pour accéder au contenu dans le répertoire physique,qui peut être une page Web ou une liste de répertoires et de fichiers supplémentaires. Si vous spécifiez un nom différent pour le répertoire virtuel et le répertoire physique, il est plus difficile pour les utilisateurs de découvrir la structure physique réelle des fichiers sur votre serveur, car l'URL ne se mappe pas directement à la racine du site.

Dans IIS 7 et versions ultérieures, chaque application doit avoir un répertoire virtuel appelé répertoire virtuel racine, qui mappe l'application au répertoire physique qui contient le contenu de l'application. Toutefois, une application peut avoir plusieurs répertoires virtuels. Par exemple, vous pouvez utiliser un répertoire virtuel lorsque vous souhaitez que votre application inclue des images d'un autre emplacement dans le système de fichiers, mais vous ne souhaitez pas déplacer les fichiers images dans le répertoire physique mappé au répertoire virtuel racine de l'application.

Par défaut, IIS utilise la configuration des fichiers Web.config dans le répertoire physique auquel le répertoire virtuel est mappé, ainsi que dans tous les répertoires enfants de ce répertoire physique. Si vous ne souhaitez pas utiliser les fichiers Web.config dans les répertoires enfants, spécifiez false pour l'attribut allowSubDirConfig sur le répertoire virtuel.

Si vous avez besoin de spécifier des informations d'identification et une méthode pour accéder au répertoire virtuel, vous pouvez spécifier des valeurs pour les attributs nom d'utilisateur, mot de passeet logonMethod.

Configuration d'IIS : section <sites>

Examinez la section par défaut <sites> dans IIS 7 et versions ultérieures. Il s'agit de ce qui se trouve dans le fichier ApplicationHost.config (situé à %windir%\system32\inetsrv\config\) après l'installation d'IIS sur 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>

Lorsque vous voyez un seul « / » dans un champ de chemin d'accès, vous savez qu'il s'agit d'un objet racine. Selon qu'elle se trouve dans la section application ou répertoire virtuel, il s'agit d'une application racine ou d'un répertoire virtuel racine.

Éléments par défaut

La section suivante répertorie les collections et les éléments de la section <sites>, ainsi que leur relation hiérarchique dans la section <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

Notez qu'il existe deux éléments qui apparaissent à plusieurs endroits : l'élément <applicationDefaults> et l'élément <virtualDirectoryDefaults>. Il existe également un élément <siteDefaults>, bien qu'il ne s'affiche qu'une seule fois, car il ne peut être configuré qu'à un seul emplacement dans la section <sites>. Les éléments par défaut sont spéciaux, car ils vous permettent de configurer les valeurs par défaut pour les attributs au lieu de devoir répéter les mêmes valeurs dans chaque collection.

Lorsqu'un attribut est configuré à plusieurs niveaux, la valeur au niveau le plus bas est utilisée. Par exemple, si vous spécifiez une valeur par défaut dans un élément <applicationDefaults> dans la section <sites> et dans une collection <site>, la valeur de la collection <site> sera utilisée. En outre, si le même attribut ou l'élément enfant est configuré à la fois dans un élément par défaut et dans la collection de l'objet, la valeur de la collection sera utilisée. Par exemple, si vous configurez un attribut dans un élément <applicationDefaults> et dans une collection <application>, la valeur de la collection <application> sera utilisée.

Le tableau suivant indique sous quels éléments parents un élément <applicationDefaults> peut être configuré et décrit l'effet des valeurs sur les applications.

Élément parent Description
<sites> section Spécifie les paramètres par défaut pour toutes les applications sur le serveur.
<site>collection Spécifie les paramètres par défaut pour toutes les applications du site parent.

Le tableau suivant indique sous quels éléments parents un élément <virtualDirectoryDefaults> peut être configuré et décrit l'effet des valeurs sur les répertoires virtuels.

Élément parent Description
<sites> section Spécifie les paramètres par défaut de tous les répertoires virtuels sur le serveur.
<site>collection Spécifie les paramètres par défaut pour tous les répertoires virtuels du site parent.
<application>collection Spécifie les paramètres par défaut de tous les répertoires virtuels dans l'application parente.

Résumé

Vous devez maintenant avoir une meilleure compréhension des sites, applications et répertoires virtuels dans IIS 7 et versions ultérieures. Contrairement à IIS 6.0, les applications et les répertoires virtuels sont devenus des objets distincts dans la configuration, ce qui met en évidence leur objectif unique pour le serveur Web et leur relation avec le site. En outre, les sites peuvent désormais contenir des applications qui utilisent des protocoles autres que HTTP et HTTPS, qui étend la fonctionnalité de site tout en conservant les avantages du modèle de processus introduit dans IIS 6.0.

Pour plus d'informations sur l'architecture WAS et IIS, consultez l'architecture de traitement des demandes IIS sur IIS.NET. Pour plus d'informations sur les paramètres de configuration abordés dans cet article, consultez Schéma des paramètres IIS 7 sur MSDN.