Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Walter Oliver
Übersicht
Was die Implementierung betrifft, so folgt die Lösung den empfohlenen Mustern und Praktiken für die Erstellung von Webdiensten unter Verwendung der Windows Communication Foundation (WCF), wie sie in der Anleitung zur Web Service Software Factory beschrieben sind.
Weitere Informationen finden Sie auf der folgenden Website:
In den folgenden Abschnitten werden die einzelnen Teilsystem-Implementierungen im Detail beschrieben.
- Teilsysteme
- Web-Teilsystem
- FTP-Teilsystem
- Subsystem zur Speicherung von Inhalten
- Subsystem Benutzerkonto
- SQL-Teilsystem
- Hosting der Musterdienste
- Sicherheitsrollenanbieter
Subsysteme
Die Implementierung jedes Teilsystems, wie Web, FTP, SQL usw., ist in drei Projekte aufgeteilt:
- DatenVerträge
- Dienstleistungsvereinbarungen
- ServiceContract-Implementierung, wie im folgenden Diagramm dargestellt.
Aufgrund der Tatsache, dass es eine bestimmte gemeinsame Funktionalität zwischen allen Subsystemen gibt, wie z.B. die Ausnahmeverwaltung, sind alle diese Komponenten in einem separaten Projekt gruppiert, dem Microsoft.Hosting.Management. Darüber hinaus verwenden alle Teilsysteme dieselben FaultContracts, um eine einheitliche Ausnahmebehandlung für alle WCF-Dienste zu gewährleisten, wie im obigen Architekturdiagramm dargestellt.
Web-Teilsystem
IIS 7.0 führt ein neues Konfigurationssystem ein, das den Kern aller neuen Verwaltungsfunktionen bildet. Das Konfigurationssystem basiert auf verteilten Klartext-XML-Dateien, die die Konfigurationseinstellungen für die gesamte Webserver-Plattform, einschließlich IIS, ASP.NET und anderer Komponenten wie FTP, enthalten und optional zusammen mit den Web-Inhalten in den Content-Verzeichnissen eingestellt werden können.
Verschiedene Ebenen der Konfigurationshierarchie können vom Maschinenadministrator an andere Benutzer delegiert werden, z. B. an den Standortadministrator oder den Anwendungsentwickler.
Sichere Standardeinstellungen und eine sofortige Sperrung beschränken den Schreibzugriff auf die Konfigurationseinstellungen auf den Maschinenadministrator. Ausgefeilte und granulare Sperrfunktionen ermöglichen jedoch die sichere Entsperrung und die Delegation der Verwaltung bestimmter Konfigurationseinstellungen an mehrere Benutzer für ihren Bereich des Web-Namensraums.
Das System ist auf zwei Ebenen abwärtskompatibel: auf der API-Ebene mit früheren Versionen von IIS und auf der XML-Ebene mit früheren Versionen des .NET Framework.
Schema
Im Kern wird das Konfigurationssystem durch ein deklaratives Schema gesteuert. Das Konfigurationsschema umfasst mehrere Dateien, die sich an einem bekannten Ort befinden: windows\system32\inetsrv\config\schema.
Diese Schemadateien definieren die verschiedenen Konfigurationen/Einstellungen, die das Verhalten des Webservers, der Websites, der Anwendungen und anderer Einheiten steuern.
Die im Web-Subsystem definierten Datenverträge werden von diesen Schemadateien abgeleitet. Das folgende Fragment von IIS_schema.xml zeigt die Definition von ProcessModel:
Der folgende Codeschnipsel zeigt den entsprechenden DataContract für ProcessModel:
The following code snippet shows the corresponding DataContract for ProcessModel:
Wie in früheren Artikeln beschrieben, werden alle Dienstleistungsvorgänge in drei Kategorien eingeteilt:
- Bereitstellung
- Verwaltung
- Abfrage
Nach diesem Muster werden alle mit dem Web-Teilsystem zusammenhängenden Dienstvorgänge durch die folgenden drei Dienstverträge definiert:
- IProvisioningService
- IManagementService
- IQueryService
Die folgenden Codeschnipsel zeigen die tatsächlichen Definitionen für diese drei Servicekontrakte anschaulich:
Alle Dienstimplementierungen sind im Dienstimplementierungsprojekt enthalten, wie im folgenden Visual Studio-Bildschirmausschnitt dargestellt:
Da sich bestimmte Operationen zwischen diesen drei Diensten überschneiden, werden alle tatsächlichen Implementierungen von der Klasse WebManager als statische Methoden gehandhabt, die die verwalteten APIs von IIS nutzen.
Neben den webbezogenen Vorgängen gibt es die Klasse CertificateManager, die alle zertifikatsbezogenen Vorgänge abwickelt. Windows Server® 2008 hat neue APIs für die Verwaltung von Zertifikaten eingeführt, und diese Plattform-APIs sind nicht als verwalteter Code verfügbar. CertificateManager verwendet p/invoke, um diese APIs als verwaltete APIs zu verpacken.
Das Dienstimplementierungsprojekt enthält auch einige konfigurationsbezogene Klassen, damit die Dienste die in der Konfiguration (d. h. web.config, app.config usw.) definierten Einstellungen verwenden können.
Da IIS 7.0 eine große Anzahl von Einstellungen enthält, sind noch nicht alle Dienstvorgänge implementiert. Wenn es die Zeit erlaubt, werden wir weitere Operationen hinzufügen. Wenn man sich jedoch an die bestehende Implementierung hält, ist es relativ einfach, die Funktionalität zu erweitern, falls andere Benutzer sie benötigen.
FTP-Teilsystem
Microsoft hat einen neuen FTP-Dienst entwickelt, der für Windows Server® 2008 komplett neu geschrieben wurde. Dieser neue FTP-Dienst enthält viele neue Funktionen, die es Web-Autoren ermöglichen, Inhalte besser als bisher zu veröffentlichen, und bietet Web-Administratoren mehr Sicherheit und Einsatzmöglichkeiten. Einzelheiten zu den neu eingeführten FTP-Diensten finden Sie in den entsprechenden Dokumentationen.
Schema und Diagramme
Das Backend-Konfigurationssystem für den FTP-Dienst in Windows Server 2008 basiert auf der Systemarchitektur des IIS-Dienstes. Alle FTP-bezogenen Einstellungen werden in der Datei FTP_Schema.xml unter windows\system32\inetsrv\config definiert. Das folgende Diagramm zeigt einen Ausschnitt aus der Schemadatei:
Die Implementierung des FTP-Subsystems folgt demselben Entwurfsmuster wie das oben beschriebene Web-Subsystem. Der folgende Bildschirmausschnitt zeigt dies.
Da der FTP-Dienst aus Sicht der Konfiguration eine Erweiterung des IIS-Dienstes ist, werden bei der Implementierung dieselben verwalteten APIs - Microsoft.Web.Administration - verwendet. Die Klasse FTPManager enthält alle tatsächlichen Implementierungen der Dienstoperationen und hängt von der oben beschriebenen Klasse WebManager ab, um einige der Funktionen wiederzuverwenden.
Subsystem zur Speicherung von Inhalten
Das Content-Storage-Subsystem bietet eine Reihe von Diensten für die Verwaltung von Inhalten im Windows-Dateisystem, z. B. das Erstellen eines Verzeichnisses, das Festlegen von Verzeichnis-/Dateiberechtigungen und die Verwaltung von Festplattenkontingenten.
Diagramme
Die folgenden Diagramme zeigen das gleiche Entwurfsmuster, das für die Implementierung von Diensten für die Speicherung von Inhalten verwendet wird. Natürlich können auch andere Dateisysteme nach demselben Muster implementiert werden.
Die eigentliche Implementierung des Content-Storage-Dienstes befindet sich in der Klasse ContentStorageManager in der Komponente Microsoft.Hosting.Management, da diese Funktionen auch von anderen Diensten genutzt werden können.
Subsystem Benutzerkonto
Das Benutzerkonto-Subsystem implementiert die allgemeinen Funktionen zum Erstellen von lokalen Windows-Benutzerkonten, Active Directory-Benutzern, OU und Gruppen.
Diagramm-Muster
Es folgt demselben Entwurfsmuster wie die anderen Teilsysteme. Es besteht aus DataContracts, ServiceContracts und ServiceImplementation. Alle Implementierungen der Dienstvorgänge sind in der Klasse UserAccountManager im Projekt Microsoft.Hosting.Component enthalten.
SQL-Teilsystem
Das SQL-Subsystem implementiert eine Reihe von Operationen zur Verwaltung von Microsoft SQL Server® 2005-bezogenen Diensten, wie z. B. Datenbank erstellen, Datenbank sichern/wiederherstellen usw. Es nutzt die Microsoft SQL Server SMO (SQL Management Objects) für die Bereitstellung aller Funktionen. Um die Kompilierung und Ausführung des Dienstes zu ermöglichen, sind Microsoft SQL Server-Clientkomponenten erforderlich. Sie können ähnliche Dienstoperationen für verschiedene Datenbankprodukte, wie Oracle und MySQL, implementieren.
Diagramm zur Umsetzung
Die Implementierung folgt demselben Entwurfsmuster: Sie enthält die DataContracts, ServiceContracts und ServiceImplementation wie unten dargestellt.
Hosting der Musterdienste
Es wurden zwei verschiedene Hosting-Lösungen implementiert: IIS-basiertes Hosting und Windows Service-basiertes Hosting.
Optionen
Implementieren Sie Ihre eigenen bevorzugten Hosting-Optionen, indem Sie die WCF-Dokumentationen zur Implementierung von WCF-Hosting befolgen:
Oder
Weitere Optionen sind unter WCF Hosting verfügbar.
Die folgende Abbildung zeigt die beiden Hosting-Lösungen in Visual Studio.
Anbieter von Sicherheitsrollen
Der Beispielcode verwendet den Windows Role Provider, um bei jedem Aufruf eine Rollenprüfung in WCF durchzuführen, um zu überprüfen, ob der Aufrufer Mitglied der Gruppe WindowsBuiltInRole.Administrator ist. Dies ist in der Datei WindowsAuthorizationManager.cs innerhalb des Projekts Microsoft.Hosting.Management implementiert, wie in der folgenden Abbildung zu sehen ist.
Veränderung der Rolle
Wenn diese Rolle geändert werden muss, ist die Methode zur Änderung CheckAccessCore, wie in der folgenden Abbildung gezeigt