Einführung in den IIS7 von Vista

02.03.2007 von THOMAS WOELFER 
Windows Vista ist mittlerweile verfügbar und damit auch IIS7, der Nachfolger des Internet Information Server 6 aus Windows Server 2003. Dieser Beitrag macht Sie fit für die Arbeit mit dem neuen Anwendungs-Server von Microsoft.

Anders als IIS6, den es nur im Windows Server gab, gibt es den IIS7 auch im Desktop-System Windows Vista. Dabei packt Microsoft den IIS7 in jede Vista-Version außer der Home Basic. Allerdings haben sind nur Vista Enterprise und Vista Ultimate nicht in den Funktionen des IIS 7 limitiert.

Wer mit Hilfe des IIS7 Webanwendungen entwickeln will, sollte sich also entweder für die Enterprise oder die Ultimate entscheiden, denn der Versuch AJAX-Anwendungen zu entwickeln, muss bei maximal drei gleichzeitigen Verbindungen, wie sie Home Premium bietet, fehlschlagen. Welche Version von Vista im IIS welchen Funktionsumfang bietet, kann man bei Technet nachlesen.

Die wesentlichen Unterschiede finden Sie in der folgenden Tabelle aufgelistet:

Feature

Longhorn

Vista Enterprise / Home Ultimate

Vista Home Premium

ODBC Logging

Ja

Ja

Nein

Windows Authentifizierung

Ja

Ja

Nein

Digest Authentifizierung

Ja

Ja

Nein

Zertifikat-Authentifizierung

Ja

Ja

Nein

FTP-Server

Ja

Ja

Nein

Gleichzeitige Verbindungen

Unbeschränkt

10

3

Die Installation

Bei der Installation von Vista wird der IIS 7 nicht per Default mit eingerichtet. Stattdessen müssen Sie das Paket manuell nach installieren. Das erfolgt aber wie gewohnt über die Systemsteuerung und bietet zunächst keine Überraschungen – zumindest so lange nicht, bis man tatsächlich zur Auswahl der erwünschten Komponenten gelangt. Dort findet sich dann nämlich im Gegensatz zum IIS6 gleich eine recht umfangreiche Liste an Unterfeatures, die einzeln ein- und ausgeschaltet werden können.

Aufgeteilt: Beim neuen IIS können viele Komponenten einzeln installiert werden.

Die Default-Auswahl ist dabei zum Beispiel für eine Entwicklermaschine nicht ausreichend, denn die ASP.Net-Funktionen sind von Haus aus nicht dabei. Es lohnt sich also, einmal alle verfügbaren Optionen durchzugehen.

Für Entwickler besonders wichtig: „IIS6 Management Compatibility“. Der IIS 7 hat zwar ein eigenes neues Management-Interface, aber praktisch alle Entwicklungstools und auch Installationsprogramme für Web-Anwendungen beruhen natürlich noch auf dem alten Interface des IIS 6.

Auch für den normalen Betrieb des Servers macht es Sinn, nur genau die Funktionen auszuwählen, die für die eigene Web-Anwendung auch tatsächlich benötigt werden: Je weniger Komponenten man startet, um so weniger Angriffsfläche bietet der Server.

Die Konfiguration

Beim IIS 7 werden alle Konfigurationsinformationen in XML-Dateien gespeichert. Die globale Konfiguration landet dabei in der Datei \Windows\System32\inetsrv\config\applicationHost.config. In dieser Datei finden Sie die Basiseinstellungen. Konfigurationsänderungen, die Sie über die Systemsteuerung vornehmen, verändern im Wesentlichen Einstellungen in dieser Datei. Das Schema ist hierarchisch und ähnelt sehr stark dem von bei ASP.Net bekannten Aufbau der web.config-Dateien.

Anwendungsbezogene Konfigurationsinformationen werden in lokalen web.config-Dateien abgelegt – Änderungen erfolgen über die administrative Konsole. Dabei bearbeitet die Konsole auch bereits existierende web.config-Dateien – also solche, die für ASP.Net-Anwendungen gedacht sind, die vor dem Erscheinen von IIS 7 entwickelt wurden. Dazu hinterlässt die Konsole einen neuen Ast mit der Bezeichnung <system.webserver> in den Konfigurationsdateien. Was zunächst erschreckend klingt, ist aber völlig sicher: ASP.Net 2.0 unterstützte bereits früher das heute von IIS 7 verwendete Schema. Vorhandene Anwendungen kommen also mit den Änderungen des IIS 7 problemlos klar – auch wenn sie nachträglich wieder unter einem IIS 6 betrieben werden.

Text-Config: Die Konfiguration des Servers und der Sites erfolgt per XML-Dateien, die aber mit der Konsole editiert werden können.

Ein sehr praktischer Nebeneffekt der Konfiguration per XML-Dateien ist der, dass es im Gegensatz zum IIS 6 nun extrem einfach ist, ganze Websites zu kopieren. Beim IIS 6 landeten viele Konfigurationsinformationen über eine gegebene Site in der Metabase – und diese Informationen waren schlecht zu kopieren. Beim IIS 7 finden sich alle Konfigurationsinformationen über eine Site, deren Anwendungen und virtuelle Verzeichnisse nur noch in den web.config-Dateien: Man kann also eine komplette Site einschließlich aller zugehörigen Konfigurationsinformationen einfach per „copy“ auf einen neuen Rechner übertragen.

Völlig Neu: Die Management Konsole

Der IIS 7 lässt sich über zwei Konsolen administrieren: Zum einen können Sie die alte vom IIS 6 bekannte Oberfläche benutzen und zum anderen kommt mit dem IIS 7 auch eine neue. Diese neue Konsole ist die auffälligste Veränderung am neuen Webserver. Sie bietet eine Vielzahl an neuen und bekannten Optionen und Einstellmöglichkeiten.

Zentral: Die Management Konsole vereinheitlicht die Konfiguration von IIS und ASP.Net.

Die willkommenste Veränderung ist dabei die, dass die Konsole nun die Konfiguration von IIS und ASP.Net in einer gemeinsamen Oberfläche zusammenfasst. Nicht ganz so willkommen ist die Tatsache, dass viele Begriffe für bekannte Dinge verändert wurden und nun unter einem anderen Namen zu finden sind. Mit der neuen Konsole können nun zum Beispiel Users und Roles, custom Profiles, Provider und Connection Strings angelegt werden. Gleichzeitig bietet die neue Konsole auch immer einen Befehl für „Advanced Settings“, mit denen Einstellungen am IIS bzw. für virtuelle Verzeichnisse vorgenommen werden können, die beim IIS 6 über die Management Konsole gar nicht erreichbar waren.

Aufteilung der Konsole

Die neue Management Konsole setzt sich aus drei Teilbereichen zusammen. Ganz links im Fenster erscheint der Webserver, der wie bisher gewohnt mit seinen Application Pools, Websites und virtuellen Verzeichnissen als Baum dargestellt wird. Ganz rechts im Fenster werden Kommandos angezeigt, die auf das momentan ausgewählte Element anwendbar sind. Im Hauptteil der Konsole gibt es zwei Ansichten, zwischen denen per Reiter umgeschaltet werden kann. Die eine Ansicht ist die „Features View“, die andere die „Content View“.

In der Inhaltsansicht werden wie bisher gewohnt die zu einer Site oder einem virtuellen Verzeichnis gehörenden Ressourcen (also Dateien, Ordner oder virtuelle Verzeichnisse) angezeigt. In der Featureübersicht werden Icons angezeigt, über die spezielle Features konfiguriert werden können angezeigt. Die Anzeige kann dabei nach Bereich (IIS oder ASP.Net) oder nach Kategorie (Security, Development, etc.) gruppiert werden.

Konfigurierbare Features sind dabei zum Beispiel die .Net-Compilation, über die Parameter für den Übersetzungsvorgang eingestellt werden können, SMTP-Email für die Konfiguration des Email-Transportes und so weiter.

Zusätzlich zu ISAPI: Die integrierte Pipeline

Der IIS 7 bietet eine neue Programmierschnittstelle für die Abarbeitung von Anfragen mit, die stark an die bekannte ASP.Net-Pipeline angelehnt ist. Genau wie bei ASP.Net gibt es das Konzept von Modulen und Handlern, mit denen man sich in den Prozess der Abarbeitung von Anfragen einhängen kann.

Dabei gibt es gleich zwei Geschmacksrichtungen: Eine für Module, die mit nativem Code programmiert wurden, und eine für .Net. Die Konsequenz daraus ist, dass man HttpModules und HttpHandler im web.config verschieben muss: Diese Äste müssen in den <system.webserver> Teil verschoben werden. Wenn Sie eine Web-Anwendung auf IIS 7 upgraden, dann erledigt das der Upgrade-Prozess allerdings automatisch.

Beim Anlegen eines neuen Application Pools verwendet der IIS 7 von Haus aus die neue integrierte Pipeline für diesen Pool. Es ist aber auch weiterhin möglich, statt dessen den altbekannten ISAPI Modus zu verwenden.

Erweiterbarkeit: Die Module

Beim IIS 7 können Erweiterungen für den Webserver in so genannten Modulen implementiert werden. Tatsächlich ist es so, dass ein Großteil der von Haus aus ausgelieferten Funktionalität in Form solcher Module vorliegt.

Module lassen sich entweder in C++ oder als managed Code mit .Net implementieren. Sie können alle Module einzeln laden oder entladen werden. Ob ein geladenes Modul verwendet wird, können Sie für jede Website einzeln festlegen.

Zusätzlich zu Modulen gibt es auch noch die so genannten Handler. Dabei erledigen Handler und Module sehr ähnliche Arbeit, unterscheiden sich aber doch. Ein Modul ist ein Programm, das jeden Request an den Webserver mitverarbeitet, und zwar völlig unabhängig davon, was für eine Art von Ressource angefordert wurde.

Im Gegensatz dazu verarbeitet ein Handler nur Anfragen, die eine bestimmte Art von Ressource betreffen. So behandelt der ASPClassic Handler beispielsweise per Default alle Anfragen an .asp Seiten – aber keine Anfragen an andere Ressourcen.

Neue Kommandozeile

Beim IIS 7 gibt es ein neues Kommandozeilenprogramm namens appcmd.exe, das sich im Verzeichnis %windows%\system32\inetsrv befindet und nur mit administrativen Rechten ausgeführt werden kann. Mit diesem Tool erzeugen und konfigurieren Sie Websites, Web-Anwendungen, Application Pools und virtuelle Verzeichnisse. Ebenso dient es dazu, Sites zu starten und anzuhalten oder Application Pools zu starten, anzuhalten und wiederzuverwenden. Zudem zeigt es Informationen über die Worker Prozesse und Anfragen an den Webserver an. Die Hilfe von appcmd funktioniert so ähnlich wie die vom Befehl Net: AppCmd /? liefert eine erste kleine Übersicht, Details zu den einzelnen Befehlen erhalten Sie, indem Sie zusätzliche Parameter angeben. Hilfe zum Parameter Request liefert beispielsweise die Eingabe von

AppCmd Request /?

IIS 7 hat auch ein völlig neues Konfigurationsinterface per WMI – und das macht ein völlig anderes Werkzeug überraschenderweise zu einem sehr guten Kandidaten für die Konfiguration eines IIS 7 Webservers: Microsoft PowerShell. Die PowerShell kommt ja nicht nur mit .Net Objekten klar, sondern kann auch wunderbar mit WMI Interfaces arbeiten. Eine ausführliche Einführung in die Konfiguration von IIS 7 mit Powershell finden Sie online.

CMD.EXE: Mit AppCmd kann der IIS 7 von der Kommandozeile aus konfiguriert werden.

Mit diesem Beitrag haben Sie einen ersten Einstieg in den IIS 7 erhalten: Für den Einsatz in freier Wildbahn wird der IIS 7 zwar erst in Form von Longhorn Server verfügbar werden – für den Einstieg in die Konfiguration und Entwicklung mit dem IIS 7 stehen aber die Vista-basierten Versionen des IIS schon heute bereit: Momentan ist also eine gute Zeit, sich näher mit dem IIS 7 zu beschäftigen. (mha)