Freigeben über


Dienstleistungen Implementierung

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.

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.

Screenshot Projektmappen-Explorer mit den drei Projektlisten.

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:

Screenshot der coded process model definition in the I I S unterstrich schema dot X M L file.

Der folgende Codeschnipsel zeigt den entsprechenden DataContract für ProcessModel:

Screenshot des Codeausschnitts für das Prozessmodell.

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:

Screenshot des Codeausschnitts zum Definieren des Bereitstellungsdiensts für I.

Screenshot des Codeausschnitts zum Definieren des I-Verwaltungsdiensts.

Screenshot des Codeausschnitts zum Definieren des I-Abfragediensts.

Alle Dienstimplementierungen sind im Dienstimplementierungsprojekt enthalten, wie im folgenden Visual Studio-Bildschirmausschnitt dargestellt:

Screenshot der Projektdateistruktur der Dienstimplementierung.

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:

Screenshot des Codefragments der Schemadatei.

Die Implementierung des FTP-Subsystems folgt demselben Entwurfsmuster wie das oben beschriebene Web-Subsystem. Der folgende Bildschirmausschnitt zeigt dies.

Screenshot der Dateistruktur des Web-Subsystems.

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.

Screenshot der Struktur von Datenverträgen, Dienstleistungsverträgen und Service-Implemeation.

Screenshot der Struktur der Microsoft-Hostingverwaltung.

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.

Screenshot des Entwurfsmusters für die Benutzerkonten-Manager-Klasse.

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.

Screenshot des Entwurfsmusters für Microsoft Hosting S Q L.

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.

Screenshot mit zwei Hostinglösungsstrukturen.

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.

Screenshot des Windows-Autorisierungs-Managers im Abschnitt

Veränderung der Rolle

Wenn diese Rolle geändert werden muss, ist die Methode zur Änderung CheckAccessCore, wie in der folgenden Abbildung gezeigt

Screenshot eines Codeausschnitts des Prüfzugriffskerns.