Einführung in IIS-Architekturen

vom IIS Team, Reagan Templin

Kompatibilität

Version Hinweise
IIS 7.0 und höher Die in diesem Artikel beschriebenen Features wurden in IIS 7.0 eingeführt.
IIS 6.0 und früher Die in diesem Artikel beschriebenen Features wurden vor IIS 7.0 nicht unterstützt.

Einführung

Internetinformationsdienste (IIS) 7 und höher bieten eine Anforderungsverarbeitungsarchitektur, die Folgendes umfasst:

  • Den Windows-Prozessaktivierungsdienst (Windows Process Activation Service, WAS), mit dem Websites andere Protokolle als HTTP und HTTPS verwenden können.
  • Ein Webservermodul, das durch Hinzufügen oder Entfernen von Modulen angepasst werden kann.
  • Integrierte Pipelines für die Anforderungsverarbeitung von IIS und ASP.NET.

Komponenten in IIS

IIS enthält mehrere Komponenten, die wichtige Funktionen für die Anwendungs- und Webserverrollen in Windows Server® 2008 (IIS 7.0) und Windows Server 2008 R2 (IIS 7.5) ausführen. Jede Komponente hat Zuständigkeiten, z. B. das Überwachen von Anforderungen an den Server, das Verwalten von Prozessen und das Lesen von Konfigurationsdateien. Zu diesen Komponenten gehören Protokolllistener, z. B. HTTP.sys, und Dienste wie der World Wide Web Publishing Service (WWW-Dienst) und der Windows-Prozessaktivierungsdienst (Windows Process Activation Service, WAS).

Protokolllistener

Protokolllistener empfangen protokollspezifische Anforderungen, senden sie zur Verarbeitung an IIS und geben dann Antworten an Anforderer zurück. Wenn beispielsweise ein Clientbrowser eine Webseite aus dem Internet anfordert, nimmt der HTTP-Listener „HTTP.sys“ die Anforderung an und sendet sie zur Verarbeitung an IIS. Sobald IIS die Anforderung verarbeitet hat, gibt „HTTP.sys“ eine Antwort an den Clientbrowser zurück.

Standardmäßig stellt IIS „HTTP.sys“ als Protokolllistener bereit, der auf HTTP- und HTTPS-Anforderungen lauscht. „HTTP.sys“ wurde in IIS 6.0 als HTTP-spezifischer Protokolllistener für HTTP-Anforderungen eingeführt. „HTTP.sys“ bleibt der HTTP-Listener in IIS 7 und höher, umfasst jedoch Unterstützung für Secure Sockets Layer (SSL).

Um Dienste und Anwendungen zu unterstützen, die andere Protokolle als HTTP und HTTPS verwenden, können Sie Technologien wie Windows Communication Foundation (WCF) verwenden. WCF verfügt über Listeneradapter, die sowohl die Funktion eines Protokolllisteners als auch die eines Listeneradapters bereitstellen. Listeneradapter werden weiter unten in diesem Dokument behandelt. Weitere Informationen zu WCF finden Sie unter Windows Communication Foundation auf MSDN.

Hypertext Transfer-Protokollstaptel (HTTP.sys)

Der HTTP-Listener ist Teil des Netzwerksubsystems von Windows-Betriebssystemen und wird als Kernelmodusgerätetreiber implementiert, der als HTTP-Stapel (HTTP.sys) bezeichnet wird. „HTTP.sys“ lauscht auf HTTP-Anforderungen aus dem Netzwerk, übergibt die Anforderungen zur Verarbeitung an IIS und gibt dann verarbeitete Antworten an Clientbrowser zurück.

In IIS 6.0 ersetzte „HTTP.sys“ die Windows Sockets-API (Winsock), bei der es sich um eine von früheren IIS-Versionen verwendete Benutzermoduskomponente handelte, um HTTP-Anforderungen zu empfangen und HTTP-Antworten zu senden. IIS 7 und höher verwenden weiterhin „HTTP.sys“ für HTTP-Anforderungen.

„HTTP.sys“ bietet folgende Vorteile:

  • Zwischenspeicherung im Kernelmodus. Anforderungen für zwischengespeicherte Antworten werden bereitgestellt, ohne in den Benutzermodus zu wechseln.
  • Anforderungswarteschlange des Kernelmodus. Anforderungen verursachen weniger Aufwand beim Kontextwechsel, da der Kernel Anforderungen direkt an den richtigen Arbeitsprozess weiterleitet. Wenn kein Arbeitsprozess verfügbar ist, um eine Anforderung zu akzeptieren, bleibt die Anforderung in der Anforderungswarteschlange des Kernelmodus, bis ein Arbeitsprozess sie annimmt.
  • Vorabverarbeitung und Sicherheitsfilterung von Anforderungen.

World Wide Web-Publishingdienst (WWW-Dienst)

In IIS 7 und höher werden Funktionen, die zuvor nur vom World Wide Web Publishing Service (WWW-Dienst) behandelt wurden, jetzt zwischen zwei Diensten aufgeteilt: dem WWW-Dienst und dem neuen Windows-Prozessverarbeitungsdienst (Windows Process Activation Service, WAS). Diese beiden Dienste werden als LocalSystem im gleichen Svchost.exe-Prozess ausgeführt und verwenden dieselben Binärdateien.

Hinweis

Auf den WWW-Dienst wird in der Dokumentation auch als W3SVC verwiesen.

Funktionsweise des WWW-Diensts in IIS 6.0

In IIS 6.0 verwaltet der WWW-Dienst die folgenden IIS-Hauptbereiche:

  • HTTP-Verwaltung und -Konfiguration
  • Prozessverwaltung
  • Leistungsüberwachung

HTTP-Verwaltung und -Konfiguration

Der WWW-Dienst liest Konfigurationsinformationen aus der IIS-Metabasis und verwendet diese Informationen, um den HTTP-Listener („HTTP.sys“) zu konfigurieren und zu aktualisieren. Darüber hinaus startet, stoppt, überwacht und verwaltet der WWW-Dienst Arbeitsprozesse, die HTTP-Anforderungen verarbeiten.

Leistungsüberwachung

Der WWW-Dienst überwacht die Leistung und stellt Leistungsindikatoren für Websites und für den IIS-Cache bereit.

Prozessverwaltung

Der WWW-Dienst verwaltet Anwendungspools und Arbeitsprozesse, z. B. Starten, Beenden und Wiederverwenden von Arbeitsprozessen. Darüber hinaus überwacht der WWW-Dienst die Integrität der Arbeitsprozesse und ruft eine schnelle Fehlererkennung auf, um zu verhindern, dass neue Prozesse gestartet werden, wenn mehrere Arbeitsprozesse innerhalb einer konfigurierbaren Zeitspanne fehlschlagen.

Funktionsweise des WWW-Diensts in IIS

In IIS verwaltet der WWW-Dienst Arbeitsprozesse nicht mehr. Stattdessen ist der WWW-Dienst der Listeneradapter für den HTTP-Listener „HTTP.sys“. Als Listeneradapter ist der WWW-Dienst in erster Linie für die Konfiguration von „HTTP.sys“, das Aktualisieren von „HTTP.sys“ bei Konfigurationsänderungen und das Benachrichtigen von WAS zuständig, wenn eine Anforderung in die Anforderungswarteschlange aufgenommen wird.

Darüber hinaus erfasst der WWW-Dienst weiterhin die Leistungsindikatoren für Websites. Da Leistungsindikatoren weiterhin Teil des WWW-Diensts sind, sind sie HTTP-spezifisch und gelten nicht für WAS.

Windows Process Activation Service (WAS)

In IIS 7 und höher verwaltet der Windows-Prozessaktivierungsdienst (WAS) anstelle des WWW-Diensts die Konfiguration von Anwendungspools und Arbeitsprozessen. Auf diese Weise können Sie dieselbe Konfiguration und dasselbe Prozessmodell für HTTP- und Nicht-HTTP-Websites verwenden.

Darüber hinaus können Sie WAS ohne den WWW-Dienst ausführen, wenn Sie keine HTTP-Funktionalität benötigen. Sie können beispielsweise einen Webdienst über einen WCF-Listeneradapter verwalten, z. B. NetTcpActivator, ohne den WWW-Dienst auszuführen, wenn Sie in „HTTP.sys“ nicht auf HTTP-Anforderungen lauschen müssen. Informationen zu WCF-Listeneradaptern und zum Hosten von WCF-Anwendungen in IIS 7 und höher mithilfe von WAS finden Sie im Artikel zu Hosting in WCF auf MSDN.

Konfigurationsverwaltung in WAS

Beim Start liest WAS bestimmte Informationen aus der Datei „ApplicationHost.config“ und übergibt diese Informationen an Listeneradapter auf dem Server. Listeneradapter sind Komponenten, die die Kommunikation zwischen WAS und Protokolllistenern herstellen, z. B. „HTTP.sys“. Sobald Listeneradapter Konfigurationsinformationen erhalten, konfigurieren sie die zugehörigen Protokolllistener und bereiten die Listener für das Lauschen auf Anforderungen vor.

Bei WCF umfasst ein Listeneradapter die Funktionalität eines Protokolllisteners. Daher wird ein WCF-Listeneradapter wie „NetTcpActivator“ basierend auf Informationen von WAS konfiguriert. Nachdem „NetTcpActivator“ konfiguriert wurde, lauscht er auf Anforderungen, die das Net.tcp-Protokoll verwenden. Weitere Informationen zu WCF-Listeneradaptern finden Sie unter WAS-Aktivierungsarchitektur auf MSDN.

In der folgenden Liste werden die Arten von Informationen beschrieben, die von WAS aus der Konfiguration gelesen werden:

  • Globale Konfigurationsinformationen
  • Protokollkonfigurationsinformationen für HTTP- und Nicht-HTTP-Protokolle
  • Anwendungspoolkonfiguration, z. B. die Prozesskontoinformationen
  • Websitekonfiguration, z. B. Bindungen und Anwendungen
  • Anwendungskonfiguration, z. B. die aktivierten Protokolle und die Anwendungspools, zu denen die Anwendungen gehören

Wenn sich „ApplicationHost.config“ ändert, empfängt WAS eine Benachrichtigung und aktualisiert die Listeneradapter mit den neuen Informationen.

Prozessverwaltung

WAS verwaltet Anwendungspools und Arbeitsprozesse sowohl für HTTP- als auch Nicht-HTTP-Anforderungen. Wenn ein Protokolllistener eine Clientanforderung annimmt, bestimmt WAS, ob ein Arbeitsprozess ausgeführt wird oder nicht. Wenn ein Anwendungspool bereits über einen Arbeitsprozess verfügt, der Anforderungen bearbeitet, übergibt der Listeneradapter die Anforderung an den Arbeitsprozess zur Verarbeitung. Wenn im Anwendungspool kein Arbeitsprozess vorhanden ist, startet WAS einen Arbeitsprozess, sodass der Listeneradapter die Anforderung zur Verarbeitung an ihn übergeben kann.

Hinweis

Da WAS Prozesse sowohl für HTTP- als auch für Nicht-HTTP-Protokolle verwaltet, können Sie Anwendungen mit verschiedenen Protokollen im selben Anwendungspool ausführen. Sie können beispielsweise eine Anwendung wie einen XML-Dienst entwickeln und über HTTP und net.tcp hosten.

Module in IIS

IIS bietet eine neue Architektur, die sich von früheren IIS-Versionen unterscheidet. Anstatt die meisten Funktionen innerhalb des Servers selbst beizubehalten, umfasst IIS ein Webservermodul, in dem Sie nach Bedarf Komponenten hinzufügen oder entfernen können, die als Module bezeichnet werden.

Module sind einzelne Features, die der Server zum Verarbeiten von Anforderungen verwendet. IIS verwendet beispielsweise Authentifizierungsmodule zum Authentifizieren von Clientanmeldeinformationen und Cachemodule zum Verwalten von Cacheaktivitäten.

Die neue Architektur bietet gegenüber früheren Versionen von IIS die folgenden Vorteile:

  • Sie können steuern, welche Module auf dem Server vorhanden sein sollen.
  • Sie können einen Server an eine bestimmte Rolle in Ihrer Umgebung anpassen.
  • Sie können benutzerdefinierte Module verwenden, um vorhandene Module zu ersetzen oder neue Features einzuführen.

Die neue Architektur verbessert auch die Sicherheit und vereinfacht die Verwaltung. Durch das Entfernen unnötiger Module verringern Sie die Angriffsfläche und den Speicherbedarf des Servers, d. h. die Menge des Arbeitsspeichers, den Serverarbeitsprozesse auf dem Computer verwenden. Außerdem müssen Sie keine Features verwalten, die für Ihre Websites und Anwendungen nicht erforderlich sind.

Systemeigene Module

In den folgenden Abschnitten werden die nativen Module beschrieben, die mit einer vollständigen Installation von IIS 7 und höher verfügbar sind. Sie können sie abhängig von Ihren Anforderungen entfernen oder durch benutzerdefinierte Module ersetzen.

HTTP-Module

Mehrere Module in IIS 7 und höher führen für Hypertext Transfer Protocol (HTTP) spezifische Aufgaben in der Anforderungsverarbeitungspipeline aus. HTTP-Module umfassen Module zum Reagieren auf Informationen und Anfragen, die in Clientheadern gesendet werden, um HTTP-Fehler zurückzugeben, Anforderungen umzuleiten usw.

Modulname Beschreibung Resource
CustomErrorModule Sendet Standard- und konfigurierte HTTP-Fehlermeldungen, wenn ein Fehlerstatuscode für eine Antwort festgelegt wird. Inetsrv\Custerr.dll
HttpRedirectionModule Unterstützt die konfigurierbare Umleitung für HTTP-Anforderungen. Inetsrv\Redirect.dll
ProtocolSupportModule Führt protokollbezogene Aktionen aus, z. B. Festlegen von Antwortheadern und Umleitungsheadern basierend auf der Konfiguration. Inetsrv\Protsup.dll
RequestFilteringModule In IIS 7.5 hinzugefügt. Filtert Anforderungen gemäß der Konfiguration zum Steuern des Protokoll- und Inhaltsverhaltens. Inetsrv\modrqflt.dll
WebDAVModule In IIS 7.5 hinzugefügt. Ermöglicht die sicherere Veröffentlichung von Inhalten mithilfe von HTTP über SSL. Inetsrv\WebDAV.dll

Sicherheitsmodule

Mehrere Module in IIS führen Aufgaben im Zusammenhang mit der Sicherheit in der Anforderungsverarbeitungspipeline aus. Darüber hinaus gibt es separate Module für jedes der Authentifizierungsschemas, mit denen Sie Module für die gewünschten Authentifizierungstypen auf Ihrem Server auswählen können. Es gibt auch Module, die die URL-Autorisierung ausführen, und ein Modul, das Anforderungen filtert.

Modulname Beschreibung Resource
AnonymousAuthenticationModule Führt die anonyme Authentifizierung aus, wenn keine andere Authentifizierungsmethode erfolgreich ist. Inetsrv\Authanon.dll
BasicAuthenticationModule Führt die Standardauthentifizierung aus. Inetsrv\Authbas.dll
CertificateMappingAuthenticationModule Führt die Zertifikatzuordnungsauthentifizierung mit Active Directory aus. Inetsrv\Authcert.dll
DigestAuthenticationModule Führt die Digestauthentifizierung aus. Inetsrv\Authmd5.dll
IISCertificateMappingAuthenticationModule Führt die Zertifikatzuordnungsauthentifizierung mithilfe der IIS-Zertifikatkonfiguration aus. Inetsrv\Authmap.dll
RequestFilteringModule Führt URLScan-Aufgaben aus, z. B. Konfigurieren zulässiger Verben und Dateinamenerweiterungen, Festlegen von Grenzwerten und Scannen nach fehlerhaften Zeichensequenzen. Inetsrv\Modrqflt.dll
UrlAuthorizationModule Führt die URL-Autorisierung aus. Inetsrv\Urlauthz.dll
WindowsAuthenticationModule Führt die integrierte NTLM-Authentifizierung aus. Inetsrv\Authsspi.dll
IpRestrictionModule Schränkt IPv4-Adressen ein, die in der ipSecurity-Liste in der Konfiguration aufgeführt sind. Inetsrv\iprestr.dll

Inhaltsmodule

Mehrere Module in IIS führen Aufgaben im Zusammenhang mit Inhalten in der Anforderungsverarbeitungspipeline aus. Inhaltsmodule umfassen Module zum Verarbeiten von Anforderungen für statische Dateien, zum Zurückgeben einer Standardseite, wenn ein Client in einer Anforderung keine Ressource angibt, zum Auflisten des Inhalts eines Verzeichnisses usw.

Modulname Beschreibung Resource
CgiModule Führt Prozesse der gemeinsamen Gatewayschnittstelle (Common Gateway Interface, CGI) aus, um die Antwortausgabe zu erstellen. Inetsrv\Cgi.dll
DefaultDocumentModule Versucht, ein Standarddokument für Anforderungen an das übergeordnete Verzeichnis zurückzugeben. Inetsrv\Defdoc.dll
DirectoryListingModule Listet den Inhalt eines Verzeichnisses auf. Inetsrv\dirlist.dll
IsapiModule Hostet ISAPI-Erweiterungs-DLLs. Inetsrv\Isapi.dll
IsapiFilterModule Unterstützt ISAPI-Filter-DLLs. Inetsrv\Filter.dll
ServerSideIncludeModule Verarbeitet Code für serverseitiges Include. Inetsrv\Iis_ssi.dll
StaticFileModule Bearbeitet statische Dateien. Inetsrv\Static.dll
FastCgiModule Unterstützt FastCGI, das eine leistungsstarke Alternative zu CGI bietet. Inetsrv\iisfcgi.dll

Komprimierungsmodule

Zwei Module in IIS führen eine Komprimierung in der Anforderungsverarbeitungspipeline durch.

Modulname Beschreibung Resource
DynamicCompressionModule Komprimiert Antworten und wendet eine Gzip-Komprimierungsübertragungscodierung auf Antworten an. Inetsrv\Compdyn.dll
StaticCompressionModule Führt eine Vorabkomprimierung statischer Inhalte aus. Inetsrv\Compstat.dll

Zwischenspeichermodule

Mehrere Module in IIS führen Aufgaben im Zusammenhang mit dem Zwischenspeichern in der Anforderungsverarbeitungspipeline aus. Das Zwischenspeichern verbessert die Leistung Ihrer Websites und Webanwendungen, indem verarbeitete Informationen wie Webseiten im Arbeitsspeicher auf dem Server gespeichert werden. Diese Informationen werden dann in nachfolgenden Anforderungen für dieselbe Ressource wiederverwendet.

Modulname Beschreibung Resource
FileCacheModule Stellt das Zwischenspeichern im Benutzermodus für Dateien und Dateihandles bereit. Inetsrv\Cachfile.dll
HTTPCacheModule Stellt das Zwischenspeichern im Kernelmodus und im Benutzermodus in „HTTP.sys“ bereit. Inetsrv\Cachhttp.dll
TokenCacheModule Stellt das Zwischenspeichern von Benutzernamen- und Tokenpaaren im Benutzermodus für Module bereit, die Windows-Benutzerprinzipale erzeugen. Inetsrv\Cachtokn.dll
UriCacheModule Stellt das Zwischenspeichern von URL-Informationen im Benutzermodus bereit. Inetsrv\Cachuri.dll

Protokollierungs- und Diagnosemodule

Mehrere Module in IIS führen Aufgaben im Zusammenhang mit Protokollen und Diagnosen in der Anforderungsverarbeitungspipeline aus. Die Protokollierungsmodule unterstützen das Laden von benutzerdefinierten Modulen und das Übergeben von Informationen an „HTTP.sys“. Die Diagnosemodule folgen Ereignissen und melden sie während der Anforderungsverarbeitung.

Modulname Beschreibung Resource
CustomLoggingModule Lädt benutzerdefinierte Protokollierungsmodule. Inetsrv\Logcust.dll
FailedRequestsTracingModule Unterstützt das Feature „Ablaufverfolgung für Anforderungsfehler“. Inetsrv\Iisfreb.dll
HttpLoggingModule Übergibt Informationen und Verarbeitungsstatus zur Protokollierung an „HTTP.sys“. Inetsrv\Loghttp.dll
RequestMonitorModule Verfolgt Anforderungen nach, die derzeit in Arbeitsprozessen ausgeführt werden, und meldet Informationen mit Runtime Status and Control Application Programming Interface (RSCA). Inetsrv\Iisreqs.dll
TracingModule Meldet Ereignisse an die Microsoft-Ereignisablaufverfolgung für Windows (ETW). Inetsrv\Iisetw.dll

Verwaltete Supportmodule

Einige Module in IIS unterstützen die verwaltete Integration in der IIS-Anforderungsverarbeitungspipeline.

Modulname Beschreibung Resource
ManagedEngine Stellt die Integration von verwalteten Codemodulen in der IIS-Anforderungsverarbeitungspipeline bereit. Microsoft.NET\Framework\v2.0.50727\webengine.dll
ConfigurationValidationModule Überprüft Konfigurationsprobleme, z. B. wenn eine Anwendung im integrierten Modus ausgeführt wird, aber Handler oder Module im Abschnitt „system.web“ deklariert sind. Inetsrv\validcfg.dll

Verwaltete Module

Zusätzlich zu nativen Modulen können Sie in IIS mithilfe von verwalteten Codemodulen IIS-Funktionen erweitern. Einige der verwalteten Module, z. B. UrlAuthorization, weisen ein natives Modul als Entsprechung auf, das eine native Alternative zum verwalteten Modul bereitstellt.

Hinweis

Verwaltete Module hängen vom ManagedEngine-Modul ab.

In der folgenden Tabelle sind die verwalteten Module aufgeführt, die mit einer vollständigen Installation von IIS 7 und höher verfügbar sind. Weitere Informationen zu den verwalteten Modulen finden Sie im .NET Framework SDK 2.0 auf MSDN.

Modulname Beschreibung Resource
AnonymousIdentification Verwaltet anonyme IDs, die von Features verwendet werden, die die anonyme Identifikation unterstützen, z. B. ASP.NET-Profil. System.Web.Security.AnonymousIdentificationModule
DefaultAuthentication Stellt sicher, dass ein Authentifizierungsobjekt im Kontext vorhanden ist. System.Web.Security.DefaultAuthenticationModule
FileAuthorization Überprüft, ob ein Benutzer über die Berechtigung für den Zugriff auf die angeforderte Datei verfügt. System.Web.Security.FileAuthorizationModule
FormsAuthentication Unterstützt die Authentifizierung mithilfe der Formularauthentifizierung. System.Web.Security.FormsAuthenticationModule
OutputCache Unterstützt die Ausgabezwischenspeicherung. System.Web.Caching.OutputCacheModule
Profil Verwaltet Benutzerprofile mithilfe eines ASP.NET-Profils, das Benutzereinstellungen in einer Datenquelle wie einer Datenbank speichert und daraus abruft. System.Web.Profile.ProfileModule
RoleManager Verwaltet eine RolePrincipal-Instanz für den aktuellen Benutzer. System.Web.Security.RoleManagerModule
Sitzung Unterstützt das Beibehalten des Sitzungszustands, was die Speicherung von Daten ermöglicht, die spezifisch für einen einzelnen Client innerhalb einer Anwendung auf dem Server sind. System.Web.SessionState.SessionStateModule
UrlAuthorization Bestimmt, ob der aktuelle Benutzer auf die angeforderte URL zugreifen darf, basierend auf dem Benutzernamen oder der Liste der Rollen, deren Mitglied ein Benutzer ist. System.Web.Security.UrlAuthorizationModule
UrlMappingsModule Unterstützt die Zuordnung einer echten URL zu einer benutzerfreundlicheren URL. System.Web.UrlMappingsModule
WindowsAuthentication Legt die Identität des Benutzers für eine ASP.NET-Anwendung fest, wenn die Windows-Authentifizierung aktiviert ist. System.Web.Security.WindowsAuthenticationModule

Anforderungsverarbeitung in IIS

In IIS werden die IIS- und ASP.NET-.Anforderungspipelines kombiniert, um Anforderungen mit einem integrierten Ansatz zu verarbeiten. Die neue Anforderungsverarbeitungsarchitektur besteht aus einer sortierten Liste nativer und verwalteter Module, die bestimmte Aufgaben als Reaktion auf Anforderungen ausführen.

Dieses Design bietet gegenüber früheren Versionen von IIS mehrere Vorteile. Erstens können alle Dateitypen Features verwenden, die ursprünglich nur für verwalteten Code verfügbar waren. Sie können z. B. jetzt die ASP.NET-Formularauthentifizierung und URL-Autorisierung (Uniform Resource Locator) für statische Dateien, ASP-Dateien (Active Server Pages) und alle anderen Dateitypen in Ihren Websites und Anwendungen verwenden.

Zweitens beseitigt dieses Design die Duplizierung mehrerer Features in IIS und ASP.NET. Wenn beispielsweise ein Client eine verwaltete Datei anfordert, ruft der Server das entsprechende Authentifizierungsmodul in der integrierten Pipeline auf, um den Client zu authentifizieren. In früheren Versionen von IIS würde diese Anforderung sowohl in der IIS-Pipeline als auch in der ASP.NET-Pipeline einen Authentifizierungsprozess durchlaufen.

Drittens können Sie alle Module an einem Ort verwalten, anstatt einige Features in IIS und einige in der ASP.NET-Konfiguration zu verwalten. Dies vereinfacht die Verwaltung von Websites und Anwendungen auf dem Server.

Anwendungspools in IIS

Anwendungspools trennen Anwendungen durch Prozessgrenzen, um zu verhindern, dass sich eine Anwendung auf eine andere Anwendung auf dem Server auswirkt. In IIS 7 und höher verwenden Anwendungspools weiterhin den IIS 6.0-Arbeitsprozess-Isolationsmodus. Darüber hinaus können Sie nun eine Einstellung angeben, die bestimmt, wie Anforderungen verarbeitet werden, die verwaltete Ressourcen umfassen: integrierter Modus oder klassischer Modus.

Hinweis

In IIS 6.0 werden der Arbeitsprozess-Isolationsmodus und der IIS 5.0-Isolationsmodus auf Serverebene festgelegt. Dadurch ist es unmöglich, beide Isolationsmodi auf demselben Server auszuführen. In IIS 7 und höher werden jedoch der integrierte Modus und der klassische Modus auf Anwendungspoolebene festgelegt, sodass Sie Anwendungen gleichzeitig in Anwendungspools mit unterschiedlichen Prozessmodi auf demselben Server ausführen können.

Integrierter Anwendungspoolmodus

Wenn sich ein Anwendungspool im integrierten Modus befindet, können Sie die integrierte Anforderungsverarbeitungsarchitektur von IIS und ASP.NET nutzen. Wenn ein Arbeitsprozess in einem Anwendungspool eine Anforderung empfängt, durchläuft die Anforderung in einer bestimmten Reihenfolge eine Liste von Ereignissen. Jedes Ereignis ruft die erforderlichen nativen und verwalteten Module auf, um Teile der Anforderung zu verarbeiten und die Antwort zu generieren.

Es gibt mehrere Vorteile beim Ausführen von Anwendungspools im integrierten Modus. Zuerst werden die Anforderungsverarbeitungsmodelle von IIS und ASP.NET in ein einheitliches Prozessmodell integriert. Dieses Modell entfernt Schritte, die zuvor in IIS und ASP.NET doppelt ausgeführt wurden, z. B. die Authentifizierung. Darüber hinaus ermöglicht der integrierte Modus die Verfügbarkeit verwalteter Features für alle Inhaltstypen.

Klassischer Anwendungspoolmodus

Wenn sich ein Anwendungspool im klassischen Modus befindet, verarbeitet IIS 7 und höher Anforderungen auf die gleiche Weise wie im IIS 6.0-Arbeitsprozess-Isolationsmodus. ASP.NET-Anforderungen durchlaufen zunächst native Verarbeitungsschritte in IIS und werden dann zur Verarbeitung von verwaltetem Code in der verwalteten Laufzeit an „Aspnet_isapi.dll“ weitergeleitet. Schließlich wird die Anforderung über IIS zurückgeleitet, um die Antwort zu senden.

Diese Trennung der IIS- und ASP.NET-Anforderungsverarbeitungsmodelle führt zu einer Duplizierung einiger Verarbeitungsschritte, z. B. Authentifizierung und Autorisierung. Darüber hinaus stehen verwaltete Codefeatures wie die Formularauthentifizierung nur für ASP.NET-Anwendungen oder Anwendungen zur Verfügung, für die im Skript zugeordnet wurde, dass alle Anforderungen von „aspnet_isapi.dll“ verarbeitet werden sollen.

Testen Sie Ihre vorhandenen Anwendungen auf Kompatibilität im integrierten Modus, bevor Sie eine Produktionsumgebung auf IIS 7 und höher aktualisieren und Anwendungen Anwendungspools im integrierten Modus zuweisen. Sie sollten eine Anwendung nur dann einem Anwendungspool im klassischen Modus hinzufügen, wenn die Anwendung nicht im integrierten Modus funktioniert. Ihre Anwendung kann sich z. B. auf ein Authentifizierungstoken verlassen, das von IIS an die verwaltete Laufzeit übergeben wird, und aufgrund der neuen Architektur in IIS 7 und höher wird die Anwendung durch den Prozess unterbrochen.

HTTP-Anforderungsverarbeitung in IIS

IIS 7 und höher verfügt über einen ähnlichen HTTP-Anforderungsverarbeitungsfluss wie IIS 6.0. Die Diagramme in diesem Abschnitt bieten eine Übersicht über den Prozess einer HTTP-Anforderung.

In der folgenden Liste wird der Anforderungsverarbeitungsfluss beschrieben, der in Abbildung 1 dargestellt wird:

  1. Wenn ein Clientbrowser eine HTTP-Anforderung für eine Ressource auf dem Webserver initiiert, fängt „HTTP.sys“ die Anforderung ab.
  2. „HTTP.sys“ kontaktiert WAS zum Abrufen von Informationen aus dem Konfigurationsspeicher.
  3. WAS fordert Konfigurationsinformationen aus dem Konfigurationsspeicher („applicationHost.config“) an.
  4. Der WWW-Dienst empfängt Konfigurationsinformationen, z. B. Anwendungspool und Websitekonfiguration.
  5. Der WWW-Dienst verwendet die Konfigurationsinformationen, um „HTTP.sys“ zu konfigurieren.
  6. WAS startet einen Arbeitsprozess für den Anwendungspool, an den die Anforderung gestellt wurde.
  7. Der Arbeitsprozess verarbeitet die Anforderung und gibt eine Antwort an „HTTP.sys“ zurück.
  8. Der Client empfängt eine Antwort.

Diagram shows a client in Kernel Mode interacting with elements in User Mode as described above.

Abbildung 1: Übersicht über eine HTTP-Anforderung

In einem Arbeitsprozess durchläuft eine HTTP-Anforderung in Web Server Core mehrere Schritte in einer bestimmten Reihenfolge. Diese werden als Ereignisse bezeichnet. Bei jedem Ereignis verarbeitet ein natives Modul einen Teil der Anforderung, z. B. die Authentifizierung des Benutzers oder das Hinzufügen von Informationen zum Ereignisprotokoll. Wenn eine Anforderung ein verwaltetes Modul erfordert, erstellt das native ManagedEngine-Modul eine AppDomain, wobei das verwaltete Modul die erforderliche Verarbeitung ausführen kann, z. B. die Authentifizierung eines Benutzers mit Formularauthentifizierung. Wenn die Anforderung alle Ereignisse in Web Server Core durchlaufen hat, wird die Antwort an „HTTP.sys“ zurückgegeben. Abbildung 2 unten zeigt eine HTTP-Anforderung, die in den Arbeitsprozess eintritt.

Diagram shows the Worker Process, which contains the Web Server Core, linked to the Native Modules, linked to the AppDomain.

Abbildung 2: Detail einer HTTP-Anforderung innerhalb des Arbeitsprozesses