Sie sind hier: Startseite | Wissen
BASTA 2016
 

Dieser Text ist ein Auszug aus dem Buch: "Microsoft ASP.NET - Das Entwicklerbuch" (Weitere Infos hier)

Architektur (ASP.NET 1.0 unter IIS 5.x)

Die ASP.NET-Architektur ist ein klein wenig komplexer als die klassische ASP-Architektur. Neben der einer Internet Information Server API (ISAPI) Server Extension (aspnet_isapi.dll) gibt es einen die aspnet_wp.exe, die den sogenannten ASP.NET-Arbeitsprozess (engl. ASP.NET-Arbeitsprozess) enthält. Während im klassischen ASP die Webseiten von der asp.dll interpretiert wurden und im Rahmen des IIS-Prozesses ausgeführt wurden, werden die Webseiten nun kompiliert und laufen innerhalb der aspnet_wp.exe. Man spricht bei dieser Architektur auch vom ASP.NET Page Framework.

 

Abbildung 1.1: ASP.NET-Architektur

Shadowing

Eine ASP.NET-Webanwendung wird in Wirklichkeit nicht von dem Ort ausgeführt, an dem sie gespeichert ist, sondern von einem automatisch generierten Verzeichnis unterhalb von %Framework%/Temporary ASP.NET Files. Dorthin kopiert der ASP.NET-Arbeitsprozess alle relevanten Dateien. Man spricht hier von "Shadowing". Dies hat den Vorteil, dass die Dateien innerhalb des Webservers nicht geloggt sind und jederzeit ausgewechselt werden können.

Anwendungstrennung

Der ASP.NET-Arbeitsprozess eröffnet für jede Webanwendung eine Application Domain. Durch diese Isolation wird die Stabilität von ASP.NET-Anwendungen erhöht, weil eine Web-Anwendung durch eine andere Web-Anwendung nicht mehr zum Absturz gebracht werden kann. Alle Webseiten einer Webanwendung werden in diese Application Domain geladen. Die Application Domain erhält einen eindeutigen Namen, in dem der Webservers, der virtuelle Pfad und eine eindeutige Nummer vorkommen, z.B. /LM/W3SVC/10/Root/Kapitel01-14-126681381626747979. Die Schreibweise /W3SVC/10 entspricht dabei der Adressierung dieses virtuellen Webservers via Active Directory Service Interface: IIS://servername/W3SVC/10. Den Namen der Application ermittelt man über System.Threading.Thread.CurrentThread.GetDomain.FriendlyName.

Wenn sich eine der zur Webanwendungen gehörenden lokalen Komponenten im /bin-Verzeichnis der Webanwendung ändern, wird eine neue Application Domain eröffnet. Alle laufenden Anfragen werden noch mit der alten Application Domain und den alten Komponenten aus Verzeichnis %Framework%/Temporary ASP.NET Files/ bearbeitet. Bei der ersten neuen Anfrage wird die neue Komponente in ein anderes Unterverzeichnis kopiert, dass der neue Application Domain zugeordnet ist. Die alte Application Domain wird nach Abarbeitung der letzten Anfrage vernichtet.

Abbildung 1.2: Jede Webanwendung läuft in einer eigenen Application Domain

Identität des Arbeitsprozesses

Der ASP.NET-Arbeitsprozess läuft nicht als Dienst, sondern wird von der aspnet_isapi.dll beim ersten Aufruf einer ASP.NET-Seite gestartet und beendet sich nach einer konfigurierbaren Leerlaufzeit selbst. Der ASP.NET-Arbeitsprozess wird im Standard unter dem Benutzerkonto ASPNET ausgeführt, dass bei der Installation des .NET Frameworks zusätzlich angelegt wird.

Einstellungen im IIS 5.x

Es gibt im IIS 5.x keine besonderen Einstellungen für ASP.NET – mit Ausnahme der Zuordnung der Dateiextensionen zu den entsprechenden ISAPI-DLLs. ASP.NET wird fast komplett über XML-Konfigurationsdatei innerhalb der Anwendung gesteuert. Lediglich die Sicherheitseinstellungen haben Einfluss auf ASP.NET (Dies wird näher in Kapitel 4 erläutert).

 

Architektur (ASP.NET 1.1 und IIS 6.0)

Die obige Architektur findet man unter IIS 5.0 (Windows 2000) und IIS 5.1 (Windows XP). Mit dem IIS 6.0 (Windows .NET Server-Familie) gibt es eine stärkere Integration von IIS und ASP.NET (dort ASP.NET Version 1.1). Im IIS 6.0 werden alle dynamischen Webtechniken (klassisches ASP, ASP.NET, Server Side Includes, Internet Database Connector) im Rahmen eines externen Prozesses, dem IIS-Arbeitsprozess (W3WP.exe) ausgeführt. Es kann mehr als eine Instanz von W3WP.exe geben. Dafür kennt der IIS 6.0 als neues Instrument sogenannte Application Pools.

IIS-Arbeitsprozess und ASP.NET-Arbeitsprozess erinnern von Namen und Konzept her stark aneinander. ASP.NET war vor dem IIS 6.0 auf dem Markt. Das IIS-Entwicklerteam besteht jedoch darauf, dass das ASP.NET-Team dieses beim IIS-Team abgeschaut habe und nicht umgekehrt.

Abbildung 1.3:
Architektur IIS 6.0/ASP.NET 1.1

Aus Gründen der Vereinfachung wird im weiteren Buch an vielen Stellen nur von dem ASP.NET-Arbeitsprozess gesprochen. Soweit nicht anders erwähnt, gelten die Aussagen auch für den IIS-Arbeitsprozess, also ASP.NET 1.1 und den IIS 6.0.

Application Pools

Ein Application Pool umfasst ein oder mehrere IIS-Anwendungen. Eine IIS-Anwendung ist dabei ein virtueller Webserver oder ein virtuelles Verzeichnis, das als "Anwendung" konfiguriert ist in der IIS-Metabase. Jeder Application Pool hat seine eigene Instanz von W3WP.exe. Es kann auch pro Application Pool mehr als eine Instanz des Arbeitsprozesses geben. Der IIS Arbeitsprozess ersetzt den ASP Arbeitsprozess: Er ist der .NET Runtime Host für ASPX-Seiten. Gleichzeitig hostet dieser Prozess aber auch andere dynamische Webtechniken, die innerhalb einer IIS-Anwendungen verwendet werden, die zum gleichen Application Pool gehören.

Abbildung 1.4:
Zuordnung einer Webanwendung zu einem Application Pool

Application Domains

Die Ausführungen über das Anlegen und die Lebensdauer von Application Domains in ASP.NET 1.0 gelten auch für ASP.NET 1.1. Die Application Domain leben allerdings nicht mehr innerhalb der aspnet_wp.exe, sondern innerhalb der aspnet_isapi.dll, die wiederum in der W3WP.exe lebt.

Recycling

Ein weiteres neues Feature von ASP.NET 1.1 unter IIS 6.0 ist, dass ASP.NET den IIS (auch ohne den Austausch einer der verwendeten Komponenten) dazu bewegen kann, eine neue Instanz von W3WP.exe zu starten, wenn es zu Problemen bei der Verarbeitung kommt. Diesen Vorgang nennt man Recycling. Recycling kann auch manuell im IIS Snap-in oder per Programmcode über das IIS-ADSI-Provider für das Active Directory Service Interface (ADSI) oder den IIS-WMI-Provider für die Windows Management Instrumentation (WMI) ausgelöst werden. Es kann festgelegt werden, dass nach einer bestimmten Zeit oder einer bestimmten Zahl von Abrufen ein automatisches Recycling erfolgt.

 

Hinweis

Recycling bedeutet nicht, dass alle aktuellen Anfragen verworfen werden. Diese werden weiter von der aktuellen Instanz von W3WP.exe beantwortet. Neue Anfragen gehen jedoch an die neue Instanz. Die alte Instanz wird nach Beantwortung der letzten Anfrage beendet (vgl. Ausführungen zum dynamischen Austausch von Komponenten unter ASP.NET 1.0. Diese Ausführungen gelten natürlich auch für ASP.NET 1.1).

 

Application-Pool-Einstellungen im IIS 6.0

Der IIS Arbeitsprozess im IIS 6.0 bietet neben dem Recycling noch weitere verbesserte Einstellungsmöglichkeiten:

¨     Das Benutzerkonto (die Identität), unter dem der IIS-Arbeitsprozess läuft, kann frei gewählt werden.

¨     Es kann eingestellt werden, dass  der IIS den Arbeitsprozess regelmässig überprüft und recycelt, wenn es zu Problemen kommt. Dieses Feature wird Pinging genannt.

¨     Die Anzahl der Arbeitsprozesse pro Application Pool kann eingestellt werden.

¨     Die maximale CPU-Nutzung eines Arbeitsprozesses kann festgelegt werden.

Abbildung 1.5:
Application Pool-Einstellungen im IIS 6.0

 

Die Metabase in IIS 6.0 ist nicht mehr eine Binärdatei, sondern eine XML-Datei (MetaBase.xml). Die Metabase-XML-Datei kann direkt über einen beliebigen Editor oder – besser – über das Internet-Dienst-MMC-Snap-In oder die Programmierschnittstellen Active Directory Service Interface (ADSI) oder Windows Management Instrumentation (WMI) verändert werden.

 

 

 

 

Autor: Holger Schwichtenberg
Dieser Text ist ein Auszug aus dem Buch: "Microsoft ASP.NET - Das Entwicklerbuch" (Weitere Infos hier)