Freigeben über


Übersicht zu MWA und MWM für IIS 7.0

von Janani Ravi

Abstract

Das Erweitern des IIS-Manager-Tools zum Verwalten benutzerdefinierter Konfigurationen (in den verteilten Konfigurationsdateien) auf dem IIS 7.0- Server und höher umfasst die Verwendung von APIs aus zwei verschiedenen Assemblys, dem Microsoft.Web.Administration.dll und dem Microsoft.Web.Management.dll. Diese APIs sollten für sehr unterschiedliche Aktionen verwendet werden und sie haben grundsätzlich unterschiedliche Zwecke. Dieses Dokument gibt einen schnellen Überblick darüber, welche Funktionen diese APIs bereitstellen und welche Beziehung zwischen ihnen besteht.

Einführung

Wenn Sie beabsichtigen, dem IIS-Manager (InetMgr) benutzerdefinierte Einstellungen für die Serverkonfigurationsdateien hinzuzufügen, verwenden Sie APIs aus Microsoft.Web.Administration.dll und Microsoft.Web.Management.dll. Die von den APIs dieser Baugruppen bereitgestellte Funktionalität ist grundlegend verschieden und könnte für einen Entwickler, der sie zum ersten Mal verwendet, verwirrend sein. Dieser Artikel beinhaltet einen kurzen Überblick darüber, was jede dieser Assemblys bietet.

Was sind Microsoft.Web.Administration und Microsoft.Web.Management?

Dieser Abschnitt enthält eine kurze Einführung zu jede dieser Assemblys.

Microsoft.Web.Administration

Die Microsoft.Web.Administration (MWA)-APIs werden als Verwaltete Codewrapper für die Anwendungshostverwaltungs-API (AHADMIN) erstellt, bei der es sich um eine systemeigene Codeschnittstellenbibliothek handelt. Sie bietet eine programmgesteuerte Möglichkeit, auf Webserverkonfigurations- und Verwaltungsinformationen zuzugreifen und sie zu aktualisieren.

Die Microsoft.Web.Administration.dll ist eine bequeme Möglichkeit für Benutzer, Einstellungen auf dem Server anzupassen. Das Hinzufügen von Benutzeroberflächenerweiterungen oder -funktionen wird dabei nicht unterstützt. Tatsächlich verwenden mehrere UI-Features im IIS-Manager diese API, um Konfigurationseinstellungen auf dem Back-End zu verwalten.

Die MWA-API wird verwendet, wenn ein Entwickler ein Programm in verwaltetem Code (C#, VB usw.) schreiben möchte, um den Server auf eine bestimmte Weise zu konfigurieren. Diese API wird aus eigenständigen Konsolenanwendungen oder innerhalb eines UI-Features im IIS-Manager verwendet.

Diese APIs bieten auch Unterstützung für den Zugriff auf die Konfiguration zur Laufzeit (z. B. über ein verwaltetes Modul in der IIS-Pipeline).

Microsoft.Web.Management

Die Microsoft.Web.Management.dll verfügt über ein Framework, um dem IIS-Manager-Tool neue UI-Features hinzuzufügen. Das Framework ist erweiterbar zum Entwickeln neuer Features und stellt die Basisklassen und andere Funktionen bereit. Dadurch werden benutzerdefinierte Erweiterungen zu Bürgern erster Klasse in der Benutzeroberfläche, und sie sehen genauso aus wie die integrierten IIS- und ASP.Net-Funktionen.

Der IIS-Manager verfügt über eine modulare Infrastruktur, in der jedes Benutzeroberflächen-Feature eine eigene Entität ist und einzeln mit dem Tool registriert werden muss. Die Client-Server-Architektur des IIS-Managers trennt die Logik, die die Servereinstellungen manipuliert, vom Code. Dadurch werden diese Einstellungen auf benutzerfreundliche Weise angezeigt. Jedes Feature im Tool folgt diesem Clientserver-Paradigma. Dies wird erzwungen, indem im IIS-Manager klar definierte Basisklassen für serverseitigen und Client-UI-Code bereitgestellt werden.

Diese API bietet auch den Erweiterbarkeits-Mechanismus zum Entwickeln von Benutzeroberflächen-Features, die als Listen, Eigenschaftenraster, benutzerdefinierten Aktionsbereichen, modalen Assistenten und Dialogfeldern dargestellt werden (um einige zu nennen).

Viele der vorhandenen Benutzeroberflächen-Features, die mit dem Tool ausgeliefert werden, verwenden die MWA-APIs (im serverseitigen Code), um auf die Konfiguration zuzugreifen.

Microsoft.Web.Administration

Wie bereits erwähnt, können die MWA-APIs verwendet werden, um Einstellungen auf dem Server zu bearbeiten. Sie bieten integrierten, stark typisierten Zugriff auf Websites, Anwendungen und virtuelle Verzeichnisse, die für IIS konfiguriert sind. Diese APIs ermöglichen es den Benutzern auch, ihre eigenen stark typisierten Klassen zu erstellen, die bestimmte Konfigurationsabschnitte repräsentieren, und so einen einfachen Weg zum Zugriff auf Eigenschaften und andere in diesen Abschnitten gespeicherte Informationen zu schaffen.

Diese Liste ist keineswegs vollständig, und die Baugruppe bietet weit mehr als das, was hier beschrieben ist.

ServerManager und Websites, Anwendungen und virtuelle Verzeichnisse

Der Einstiegspunkt zum Verwalten der Servereigenschaften ist die ServerManager-Klasse. Der ServerManager verfügt über einen Verweis auf die Liste aller Sites auf diesem IIS-Server, und auf einzelne Sites wird durch Indizierung in der Sites-Sammlung zugegriffen.

Auf Anwendungen und virtuelle Verzeichnisse wird auf ähnliche Weise zugegriffen. Diese Entitäten stellen auch Laufzeitstatus-Informationen bereit (z. B. ob eine Website gestartet/beendet wird). Aktualisierungen werden an den Standardeinstellungen für den gesamten Server oder an Eigenschaften vorgenommen, die zu einer einzelnen Entität gehören (etwa Aktualisierungen an einer bestimmten Website).

Die Servereinstellungen werden aktualisiert, wenn CommitChanges auf dem ServerManager aufgerufen wird.

Hier ist ein Überblick über einige der stark typisierten Klassen, die von dieser Assembly angeboten werden:

Diagram showing connections between the ServerManager class and other classes.

Zugreifen auf einzelne Konfigurationsdateien

Das verteilte Konfigurationsdateimodell, das IIS verwendet, ermöglicht es einer Website, Anwendung, einem virtuellen Verzeichnis oder sogar einem Ordner, seine Konfiguration in einer web.config-Datei zu haben.

Es ist möglich, auf einzelne Konfigurationsdateien zuzugreifen, um die Einstellungen für eine bestimmte Einheit anzupassen. Die ServerManager-Methode GetApplicationHostConfiguration wird für den Zugriff auf applicationHost.config verwendet, während die Methode GetWebConfiguration Parameter zum Abrufen bestimmter Konfigurationsdateien akzeptiert.

Generische Basisklassen für Erweiterbarkeit

Mit dem IIS-Konfigurationssystem lässt sich ein Abschnitt erstellen, in dem Sie für Ihre Anwendung relevante Eigenschaften angeben. Erstellen Sie mithilfe der MWA-APIs stark typisierte Klassen in verwaltetem Code, um diese Einstellungen zu manipulieren. Einige Basisklassen, die dies erleichtern, sind:

  • Konfiguration: stellt eine einzelne Konfigurationsdatei dar (applicationHost.config oder die Web.config-Dateien für Websites und Anwendungen)
  • ConfigurationElement: generische Entität, die verwendet wird, um ein Element in einer Konfigurationsdatei darzustellen. Dies ist die Basisklasse für Konfigurationsabschnitte, Sammlungseinträge, verschachtelte Elemente in einem Abschnitt usw.
  • ConfigurationAttribute: stellt eine Eigenschaft in einem ConfigurationElement dar
  • ConfigurationSection: leitet von ConfigurationElement ab und stellt einen Abschnitt dar, der in den IIS-Schemadateien definiert ist. Wird zum Zugreifen auf die verschiedenen Eigenschaften eines Abschnitts verwendet.
  • ConfigurationElementCollection: Eine Sammlungsklasse, die aus ConfigurationElements besteht. Leitet auch von ConfigurationElement ab.

Nachfolgend sehen Sie eine einfache Übersicht über die allgemeine Erweiterbarkeit der Konfiguration:

Diagram showing connections in a generic configuration.

Laufzeitzugriff auf eine Konfiguration

Der WebConfigurationManager wird zum Laufzeitzugriff auf die Konfigurationseinstellungen des Servers verwendet. Ein in die IIS-Pipeline geladenes verwaltetes Modul greift auf die Konfigurationseinstellungen im jeweiligen Kontext zu (z. B. eine Anforderung an einen bestimmten Standort), indem auf diese Klasse verwiesen wird.

Microsoft.Web.Management

Die Microsoft.Web.Management (MWM)-APIs sind Bausteine für die Entwicklung von serverseitigem Code zum Bearbeiten von Verwaltungseinstellungen und clientseitigen Benutzeroberflächen-Features (mit denen Benutzer diese Einstellungen auf benutzerfreundliche Weise anzeigen und bearbeiten können).

Im Folgenden werden einige der wichtigsten Klassen in jedem Namensraum kurz beschrieben. Auch hier handelt es sich nicht um eine umfassende Liste, und diese Assembly bietet viel mehr als das, was hier behandelt wird.

Ein ausführlicherer Überblick über das, was dieses Assembly bietet:

Screenshot showing lists of classes in namespaces.

Microsoft.Web.Management.Server

Klassen, die von der ModuleProvider-Basisklasse ableiten, bilden den Einstiegspunkt für den IIS-Manager, um ein UI-Modul zu identifizieren. Dies ist die Klasse, die in der Administration.config für IIS-Manager registriert werden muss, um sie als Teil des Feature-Satzes anzuzeigen.

Klassen, die von der ModuleService-Basisklasse ableiten, bilden die Substanz der serverseitigen Administration. Von diesen Klassen wird die eigentliche Bearbeitung der Servereinstellungen durchgeführt. Methoden in der Klasse, die für den Benutzeroberflächen-Client sichtbar sein müssen, werden mit dem ModuleServiceMethod-Attribut gekennzeichnet.

Die ManagementUnit liefert dem Entwickler den Kontext, in dem der Server verwaltet wird. Beispielsweise entsprechen SiteManagementUnit und ApplicationManagementUnit Standortverbindungen und Anwendungsverbindungen im IIS-Manager-Tool. Die ModuleService-Basisklasse macht die aktuelle ManagementUnit verfügbar, die für den Zugriff auf Informationen zum aktuellen Kontext verwendet werden kann.

ManagementConfigurationPath ist eine Klasse, die einen Pfad (zum aktuellen Server, Standort, Anwendung oder Ordner) darstellt. Wenn Sie eine Website verwalten, beinhaltet dies den Websitenamen und andere relevante Informationen zur Website. Die ManagementUnit macht den aktuellen ManagementConfigurationPath verfügbar.

Die ManagementConfiguration ist eine Hilfsklasse, um auf die Konfigurationseinstellungen im Server zuzugreifen und sie zu bearbeiten. Dies ist eine sehr leistungsfähige Abstraktion für die Klasse Configuration in der zuvor definierten MWA-API und ermöglicht es Ihnen, nach Abschnitten zu suchen, ohne sich darum zu kümmern, ob diese Abschnitte in applicationHost.config oder in der Stammdatei web.config definiert sind.

Die PropertyBag ist eine Art Container, der zum Aufbewahren von Informationen verwendet wird, die zwischen Client und Server übertragen werden. Dieses ist als generisches Wörterbuch implementiert. Das Wörterbuch wird bei der Übertragung von Daten in Szenarien, in denen der Server aus der Ferne verwaltet wird, zu einer Zeichenkette serialisiert.

Microsoft.Web.Management.Client

Von der Modul-Basisklasse abgeleitete Klassen bilden den Einstiegspunkt für ein Feature, um seine Benutzeroberflächen-Komponenten zu registrieren. Dies gibt an, ob es sich bei der Benutzeroberfläche für dieses Modul um eine Seite (im mittleren Bereich des IIS-Managers), einen Knoten in der Struktur oder einfach um eine Aufgabe im Aktionsbereich handelt (um einige Beispiele zu nennen).

ModuleServiceProxy ist die Basisklasse für die Methoden-Stubs, die für den Zugriff auf die tatsächlichen Dienstmethoden verwendet werden, die im ModuleService auf dem Server angegeben sind.

Die HierarchyInfo stellt einen Knoten in der Baumansicht dar und unterstützt mehrere Aktionen für den Knoten.

Die Connection-Klasse enthält alle Kontextinformationen für die aktuelle Verwaltungssitzung (eine Verwaltungssitzung, die eine Verbindung mit einem Server, Standort oder einer Anwendung definiert). Es bietet Hilfsprogramme für den Zugriff auf Dienste, zum Erstellen von Proxys usw.

Das TaskItem ist die Basisklasse für die Aufgaben, die dem Fenster Aktionen im IIS-Manager hinzugefügt wurden. Klassen wie MethodTaskItem, TextTaskItem usw. leiten von dieser Basisklasse ab und zeigen Links, Bezeichnungen, Warnungen und andere Informationen im Aktionsbereich an. Um diese Aktionen anzuzeigen, muss der Entwickler keinen zusätzlichen UI-Code schreiben.

Microsoft.Web.Management.Client.Win32

Die ModulePage ist die Basisklasse für alle Features, die eine "Seite" im mittleren Bereich des IIS-Manager-Tools anzeigen. Klassen wie ModuleListPage, ModuleDialogPage und ModulePropertiesPage werden von der ModulePage abgeleitet. Dies sind Basisklassen, die eine bequeme Möglichkeit zum Entwickeln von Seiten bieten, die Listen, Dialogfelder und Eigenschaftenraster anzeigen.

Mit der TaskForm-Basisklasse können Entwickler Formulare erstellen, die als modales Dialogfeld angezeigt werden.

Das WizardForm-Formular bildet die Basisklassen aller Dialogfelder. Entwickler können mehrere vom WizardPage abgeleitete Klassen angeben, die in den Assistenten eingebunden werden sollen.

Microsoft.Web.Management.Client.Extensions

Die Klassen in diesem Namespace stellen die Client-seitige Erweiterbarkeit mithilfe des IExtensibilityManager bereit. Beispielsweise verfügt das AuthenticationFeature über die Aufgaben für jeden Eintrag im Authentifizierungsfeature im InetMgr Tool.

Dies ist ein kurzer Überblick über die Funktionen, die die Microsoft.Web.Administration und die Microsoft.Web.Management APIs einem Entwickler bieten, der die Konfiguration und die Benutzeroberfläche erweitern möchte, um eigene Features hinzuzufügen. Ausführlichere Beschreibungen dazu, wie die Erweiterbarkeit von Konfigurationen und die Erweiterbarkeit der Benutzeroberfläche funktioniert,sind in den einzelnen Artikeln, die diese Themen behandeln, zu finden.