Verstehen von Sites, Anwendungen und virtuellen Verzeichnissen in IIS 7

von Reagan Templin

Einführung

In IIS können Sie Sites, Anwendungen und virtuelle Verzeichnisse erstellen, um über das Internet, ein Intranet oder ein Extranet Informationen für Benutzer freizugeben. Diese Konzepte waren zwar in früheren Versionen von IIS vorhanden, jedoch wirken sich etliche Änderungen in IIS 7 und höher auf die Definition und Funktionalität dieser Konzepte aus. Vor allem Sites, Anwendungen und virtuelle Verzeichnisse arbeiten nun in einer hierarchischen Beziehung als grundlegende Bausteine zum Hosten von Onlineinhalten und zur Bereitstellung von Onlinediensten zusammen.

Dieser Artikel bietet eine kurze Übersicht über Anwendungen in IIS 6.0, sodass Sie die In IIS 7 eingeführten Unterschiede besser verstehen können. Anschließend werden die Konzepte von Sites, Anwendungen und virtuellen Verzeichnissen in IIS erläutert und der Abschnitt <sites> der Konfiguration vorgestellt.

Informationen zu Sites, Anwendungen und virtuellen Verzeichnissen in IIS 6.0

In IIS 6.0 waren die Konzepte virtueller Verzeichnisse und Anwendungen verwirrend. Obwohl sie als separate Konzepte behandelt wurden (und sie sich in Sachen Funktionalität konzeptionell voneinander unterschieden), war eine Anwendung kein physisch von einem virtuellen Verzeichnis getrenntes Objekt. In IIS 6.0 war eine Anwendung im Prinzip nur ein virtuelles Verzeichnis mit einer oder einer Kombination der folgenden Eigenschaften in der Metabasis: AppFriendlyName, AppRoot, AppIsolated und AppPoolID.

Hinweis

Der Sitestamm ist eine Ausnahme, da er implizit als Anwendung behandelt wurde, selbst wenn diese Eigenschaften nicht festgelegt waren.

Anwendungen waren für IIS weniger wichtig als für die Technologien, die die Webserverfunktionalität erweitert haben, z. B. Active Server Pages (ASP), Internetserver-API (ISAPI) und ASP.NET. Diese Technologien stellten zusätzliche Features und Verarbeitung für Anwendungen bereit, die in IIS 6.0 gehostet werden, und ermöglichten Entwicklern, komplexere Anwendungen zu erstellen. Die wichtige Frage für IIS 6.0 war das Isolieren solcher Anwendungen auf eine Weise, die verhindern würde, dass Anwendungen in einem Anwendungspool Anwendungen in einem anderen Anwendungspool auf dem Server beeinträchtigen.

Informationen zu Sites, Anwendungen und virtuellen Verzeichnissen in IIS 7 und höher

IIS 7 und höher formalisiert die Konzepte von Sites, Anwendungen und virtuellen Verzeichnissen. Virtuelle Verzeichnisse und Anwendungen sind jetzt separate Objekte, die im IIS-Konfigurationsschema in einer hierarchischen Beziehung stehen. Kurz gesagt: Eine Site enthält eine oder mehrere Anwendungen, eine Anwendung enthält ein oder mehrere virtuelle Verzeichnisse und ein virtuelles Verzeichnis wird einem physischen Verzeichnis auf einem Computer zugeordnet.

Wie in IIS 6.0 enthält eine Site alle Inhalte, sowohl statisch als auch dynamisch, die dieser Site zugeordnet sind. Allerdings muss jede Site mindestens eine Anwendung enthalten, die als Stammanwendung bezeichnet wird. Und jede Anwendung (einschließlich der Stammanwendung) muss mindestens ein virtuelles Verzeichnis enthalten, das als virtuelles Stammverzeichnis bezeichnet wird. Diese Objekte bilden gemeinsam die Site.

Darüber hinaus hat das Konzept einer Anwendung in IIS 7 und höher sowohl für IIS als auch die Technologien, die die IIS-Funktionalität erweitern, eine Bedeutung. Eine Anwendung ist ein Objekt, das für den Server während der Laufzeit wichtig ist. Dies liegt daran, dass die Anforderungsverarbeitungspipelines von IIS und ASP.NET in IIS 7 und höher zusammengeführt wurden, damit Inhalte Funktionen nutzen können, die zuvor nur für Anwendungen mit verwaltetem Code bereitgestellt wurden. Beispielsweise wird jede Anwendung mit verwaltetem Code in einer Anwendungsdomäne (AppDomain) ausgeführt. Eine Anwendung kann über mehrere virtuelle Verzeichnisse verfügen, und jede wird von derselben AppDomain bereitgestellt, wie die Anwendung, zu der sie gehört.

In den folgenden Abschnitten werden Sites, Anwendungen, virtuelle Verzeichnisse und ihre zugehörigen Konfigurationen ausführlicher erläutert.

Sites

Eine Site ist ein Container für Anwendungen und virtuelle Verzeichnisse, auf die Sie über eine oder mehrere eindeutige Bindungen zugreifen können.

Die Bindung enthält zwei Attribute, die für die Kommunikation wichtig sind: das Bindungsprotokoll und die Bindungsinformationen. Das Bindungsprotokoll definiert das Protokoll, über das die Kommunikation zwischen Server und Client stattfindet. Die Bindungsinformationen definieren die Informationen, die für den Zugriff auf die Site verwendet werden. Beispielsweise kann das Bindungsprotokoll einer Website entweder HTTP oder HTTPS sein, und die Bindungsinformationen die Kombination aus IP-Adresse, Port und optionalem Hostheader.

Eine Site kann mehr als eine Bindung enthalten, wenn für die Site unterschiedliche Protokolle oder Bindungsinformationen erforderlich sind. In früheren Versionen von IIS wurden nur HTTP- und HTTPS-Protokolle unterstützt. Beispielsweise kann eine Website sowohl eine HTTP-Bindung als auch eine HTTPS-Bindung aufgewiesen haben, wenn Abschnitte der Site sichere Kommunikation über HTTPS erforderten.

In IIS 7 und höher können Bindungen auf jedes Protokoll angewendet werden. Der Windows-Prozessaktivierungsdienst (WAS) ist der neue Dienst, mit dem IIS zusätzliche Protokolle verwenden kann. Dieser Dienst behält das bekannte IIS 6.0-Prozessmodell, z. B. Anwendungspools und nachrichtenbasierte Prozessaktivierung, sowie Hostingfunktionen, z. B. schneller Ausfallschutz, Systemüberwachung und Wiederverwendung, bei. Allerdings beseitigt WAS die Abhängigkeit von HTTP aus der Aktivierungsarchitektur. Dies ist für Technologien nützlich, die Anwendung-zu-Anwendung-Kommunikation in Webdiensten über Standardprotokolle bereitstellen. Das WCF-Programmiermodell (Windows Communication Foundation) ist eine solche Technologie, die Kommunikation über die Standardprotokolle des Transmission Control-Protokolls (TCP), Microsoft Message Queuing (MSMQ) und Named Pipes ermöglichen kann. Dies ermöglicht es Anwendungen, die Kommunikationsprotokolle verwenden, IIS-Features wie Prozesswiederverwendung, schnellen Ausfallschutz und Konfigurationen zu nutzen, die vormals nur für HTTP-basierte Anwendungen verfügbar waren. Weitere Informationen zum WCF-Programmiermodell finden Sie im MSDN unter Windows Communication Foundation.

Die Site enthält nicht nur Anwendungen (die virtuelle Verzeichnisse enthalten) und gibt Bindungen an, sie hat auch die folgenden Konfigurationseinstellungen:

  • Grenzwerte: Konfigurieren Sie Einstellungen, um die Menge der Bandbreite, die Anzahl der Verbindungen oder die für Verbindungen mit einer Site zulässige Zeit zu begrenzen.
  • Protokollierung: Konfigurieren sie Einstellungen für die Verarbeitung und Speicherung von Protokolldateien auf der Site.
  • Ablaufverfolgungsprotokolle für fehlgeschlagene Anforderungen: Konfigurieren Sie Einstellungen für die Protokollierung der Ablaufverfolgung fehlgeschlagener Anforderungen auf der Site.

Anwendungen

Eine Anwendung ist eine Gruppe von Dateien, die Inhalte liefert oder Dienste über Protokolle bereitstellt, z. B. HTTP. Wenn Sie eine Anwendung in IIS erstellen, wird der Pfad der Anwendung Teil der Site-URL.

In IIS 7 und höher muss jede Site über eine Anwendung verfügen, die als Stammanwendung oder Standardanwendung bezeichnet wird. Eine Site kann jedoch über mehr als eine Anwendung verfügen. Sie können z. B. eine Website für Online-Handel haben, die über mehrere Anwendungen verfügt, z. B. eine Anwendung für einen Einkaufswagen, mit der Benutzer während des Einkaufs Artikel sammeln können und eine Anwendung für die Anmeldung, mit der Benutzer gespeicherte Zahlungsinformationen abrufen können, wenn sie einen Kauf tätigen.

Neben einer Site gehört eine Anwendung auch zu einem Anwendungspool, der die Anwendung von Anwendungen in anderen Anwendungspools auf dem Server trennt. Stellen Sie bei Anwendungen mit verwaltetem Code sicher, dass Sie Ihre Anwendung einem Anwendungspool zuordnen, der die .NET Framework-Version ausführt, die ihre Anwendung erfordert.

Wie im Abschnitt „Sites“ dieses Dokuments beschrieben, unterstützt IIS standardmäßig HTTP und HTTPS, sie können jedoch andere Protokolle verwenden. Geben Sie für jede Site eine oder mehrere Bindungen an, die mit Inhalten auf der Site kommunizieren und darauf zugreifen sollen. Damit eine Anwendung mithilfe eines Protokolls kommunizieren kann, das in der Bindung der übergeordneten Site angegeben ist, müssen Sie das Protokoll aktivieren. Geben Sie dazu im Attribut enabledProtocols der Anwendung das Protokoll an, und stellen Sie sicher, dass Sie der entsprechende Listeneradapter auf dem Server vorhanden ist und im Abschnitt <listenerAdapters> der Konfiguration angegeben ist.

Virtuelle Verzeichnisse

Ein virtuelles Verzeichnis ist ein Verzeichnisname (auch als Pfad bezeichnet), den Sie in IIS angeben und einem physischen Verzeichnis auf einem lokalen oder Remoteserver zuordnen. Der Verzeichnisname wird dann Teil der Anwendungs-URL, und Benutzer können die URL von einem Browser anfordern, um auf Inhalte im physischen Verzeichnis zuzugreifen, z. B. eine Webseite oder eine Liste zusätzlicher Verzeichnisse und Dateien. Wenn Sie dem virtuellen Verzeichnis einen anderen Namen als dem physischen Verzeichnis geben, ist es für Benutzer schwieriger, die tatsächliche physische Dateistruktur auf Ihrem Server zu ermitteln, da die URL nicht direkt dem Stamm der Site zugeordnet ist.

In IIS 7 und höher muss jede Anwendung über ein virtuelles Verzeichnis verfügen, das als virtuelles Stammverzeichnis bezeichnet wird, und das die Anwendung dem physischen Verzeichnis zuordnet, das den Inhalt der Anwendung enthält. Eine Anwendung kann jedoch über mehr als ein virtuelles Verzeichnis verfügen. Sie können z. B. ein virtuelles Verzeichnis verwenden, wenn Ihre Anwendung Bilder von einem anderen Speicherort im Dateisystem enthalten soll, Sie die Bilddateien jedoch nicht in das physische Verzeichnis verschieben möchten, das dem virtuellen Stammverzeichnis der Anwendung zugeordnet ist.

IIS verwendet standardmäßig die Konfiguration aus „Web.config“-Dateien in dem physischen Verzeichnis, dem das virtuelle Verzeichnis zugeordnet ist, sowie in allen untergeordneten Verzeichnissen in diesem physischen Verzeichnis. Wenn Sie Web.config-Dateien nicht in untergeordneten Verzeichnissen verwenden möchten, geben Sie für das Attribut allowSubDirConfig im virtuellen Verzeichnis false an.

Optional: Wenn Sie Anmeldeinformationen und eine Methode für den Zugriff auf das virtuelle Verzeichnis angeben müssen, können Sie für die Attribute username, password und logonMethod Werte angeben.

IIS-Konfiguration: Abschnitt <sites>

Sehen Sie sich den Standardabschnitt <sites> in IIS 7 und höher an. Dies ist der Inhalt der ApplicationHost.config-Datei (unter %windir%\system32\inetsrv\config\ gespeichert) nach der Installation von IIS unter 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>

Wenn ein einzelnes Zeichen „/“ in einem Pfadfeld angezeigt wird, wissen Sie, dass es sich um ein Stammobjekt handelt. Je nachdem, ob es sich im Abschnitt für Anwendungen oder virtuelle Verzeichnisse befindet, handelt es sich um eine Stammanwendung oder ein virtuelles Stammverzeichnis.

Standardelemente

Im folgenden Abschnitt werden die Sammlungen und Elemente im Abschnitt <sites> und deren hierarchische Beziehung innerhalb des Abschnitts <sites> aufgeführt.

<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

Beachten Sie, dass es zwei Elemente gibt, die an mehreren Stellen angezeigt werden: das Element <applicationDefaults> und das Element <virtualDirectoryDefaults>. Es gibt auch das Element <siteDefaults>, welches jedoch nur einmal angezeigt wird, da es an nur einer Stelle im Abschnitt <sites> konfiguriert werden kann. Standardelemente sind besonders, da sie es Ihnen ermöglichen, Standardwerte für Attribute zu konfigurieren, anstatt dieselben Werte in jeder Sammlung wiederholen zu müssen.

Wenn ein Attribut auf mehr als einer Ebene konfiguriert ist, wird der Wert auf der niedrigsten Ebene verwendet. Wenn Sie beispielsweise sowohl im Abschnitt <sites> als auch in einer Sammlung <site> einen Standardwert für ein Element <applicationDefaults> angeben, wird der Wert der Sammlung <site> verwendet. Darüber hinaus wird, wenn dasselbe Attribut oder untergeordnete Element sowohl in einem Standardelement als auch in der Sammlung des Objekts konfiguriert ist, der Wert in der Sammlung verwendet. Wenn Sie beispielsweise ein Attribut in einem Element <applicationDefaults> und in einer Sammlung <application> konfigurieren, wird der Wert der Sammlung <application> verwendet.

Die folgende Tabelle gibt an, unter welchen übergeordneten Elementen ein Element <applicationDefaults> konfiguriert werden kann, und beschreibt die Auswirkungen, die die Werte auf Anwendungen haben.

Übergeordnetes Element Beschreibung
<sites>-Abschnitt Gibt die Standardeinstellungen für alle Anwendungen auf dem Server an.
<site>-Sammlung Gibt die Standardeinstellungen für alle Anwendungen in der übergeordneten Site an.

Die folgende Tabelle gibt an, unter welchen übergeordneten Elementen ein Element <virtualDirectoryDefaults> konfiguriert werden kann, und beschreibt die Auswirkungen, die die Werte auf Anwendungen haben.

Übergeordnetes Element Beschreibung
<sites>-Abschnitt Gibt die Standardeinstellungen für alle virtuellen Verzeichnisse auf dem Server an.
<site>-Sammlung Gibt die Standardeinstellungen für alle virtuellen Verzeichnisse in der übergeordneten Site an.
<application>-Sammlung Gibt die Standardeinstellungen für alle virtuellen Verzeichnisse in der übergeordneten Anwendung an.

Zusammenfassung

Nun sollten Sie ein besseres Verständnis von Sites, Anwendungen und virtuellen Verzeichnissen in IIS 7 und höher haben. Im Gegensatz zu IIS 6.0 werden Anwendungen und virtuelle Verzeichnisse in Konfigurationen nun als unterschiedliche Objekte behandelt, was ihren eindeutigen Zweck für den Webserver und ihre Beziehung zur Site hervorhebt. Darüber hinaus können Sites nun Anwendungen enthalten, die andere Protokolle als HTTP und HTTPS verwenden, wodurch die Sitefunktionalität erweitert wird, und gleichzeitig die Vorteile des in IIS 6.0 eingeführten Prozessmodells beibehalten werden.

Weitere Informationen zur WAS- und IIS-Architektur finden Sie auf IIS.NET unter „IIS-Anforderungsverarbeitungsarchitektur“. Weitere Informationen zu den in diesem Artikel erläuterten Konfigurationseinstellungen finden Sie im MSDN unter IIS 7 Einstellungenschema.