Partager via


Implémentation des services

par Walter Oliver

Vue d’ensemble

Du point de vue de l’implémentation, la solution suit les modèles et pratiques recommandés pour créer des services Web à l’aide de Windows Communication Foundation (WCF), comme décrit dans les instructions de la fabrique de logiciels de service web.

Vous trouverez des informations supplémentaires sur le site suivant :

Dans les sections suivantes, nous décrivons en détail chaque implémentation de sous-système.

Sous-systèmes

L’implémentation de chaque sous-système, comme le web, ftp et SQL, etc., est divisée en trois projets :

  • DataContracts
  • ServiceContracts
  • Implémentation de ServiceContract, comme illustré dans le diagramme suivant.

Capture d’écran de Explorateur de solutions montrant les trois listes de projets.

En raison du fait qu’il existe une certaine fonctionnalité couramment partagée entre tous les sous-systèmes, comme la gestion des exceptions, tous ces composants sont regroupés dans un projet distinct, qui est Microsoft.Hosting.Management. En outre, tous les sous-systèmes partagent les mêmes FaultContracts pour la gestion cohérente des exceptions sur tous les services WCF, comme illustré dans le diagramme d’architecture ci-dessus.

Sous-système web

IIS 7.0 introduit un tout nouveau système de configuration, au cœur de toutes les nouvelles fonctionnalités liées à l’administration. Le système de configuration dans IIS 7 et dans les versions ultérieures sont basés sur des fichiers XML distribués, en texte clair, qui contiennent les paramètres de configuration de l’ensemble de la plateforme de serveur web, y compris IIS, ASP.NET et d’autres composants, comme FTP, et peuvent éventuellement être définis sur les répertoires de contenu avec le contenu web.

Différents niveaux de la hiérarchie de configuration peuvent être délégués par l’administrateur de l’ordinateur à d’autres utilisateurs, tels que l’administrateur de site ou le développeur d’applications.

Sécuriser les paramètres de configuration par défaut et de verrouillage hors connexion limite l’accès en écriture aux paramètres de configuration de l’administrateur de l’ordinateur uniquement ; Toutefois, les fonctionnalités de verrouillage sophistiquées et granulaires permettent le déverrouillage sécurisé et la délégation de la gestion des paramètres de configuration spécifiques à davantage d’utilisateurs, pour leur étendue de l’espace de noms web.

Le système est rétrocompatible, au niveau de l’API, avec les versions précédentes d'IIS et au niveau XML, avec les versions précédentes du .NET Framework.

schéma

Le système de configuration est piloté par un schéma déclaratif, à son cœur. Le schéma de configuration s’étend sur plusieurs fichiers, qui résident à un emplacement connu : system32\inetsrv\config\schema.

Ces fichiers de schéma définissent les différentes configurations/paramètres qui contrôlent les comportements du serveur web, les sites et les applications, et d’autres entités.

Les contrats de données définis dans le sous-système web sont dérivés de ces fichiers de schéma. Le fragment suivant de IIS_schema.xml montre la définition de ProcessModel :

Capture d’écran montrant la définition du modèle de processus codé dans le fichier X M L du schéma de soulignement I S.

L’extrait de code suivant montre le DataContract correspondant pour ProcessModel :

Capture d’écran montrant l’extrait de code pour le modèle de processus.

Reportez-vous au code réel pour obtenir le code source complet.

Comme décrit dans les articles précédents, toutes les opérations de service sont regroupées en trois catégories :

  • Approvisionnement
  • Gestion
  • Requête

À la suite de ce modèle, toutes les opérations de service liées au sous-système web sont définies par les trois contrats de service suivants :

  • IProvisioningService
  • IManagementService
  • IQueryService

Les extraits de code suivants montrent les définitions réelles de ces trois contrats de service de façon respectable :

Capture d’écran montrant l’extrait de code pour définir le service d’approvisionnement I.

Capture d’écran montrant l’extrait de code pour définir le service de gestion I.

Capture d’écran montrant l’extrait de code pour définir le service de requête I.

Toutes les implémentations de service sont contenues dans le projet d’implémentation de service, comme illustré dans la capture d’écran Visual Studio suivante :

Capture d’écran montrant la structure de fichiers de projet d’implémentation de service.

En raison du fait que certaines opérations se chevauchent entre ces trois services, toutes les implémentations réelles sont gérées par la classe WebManager en tant que méthodes statiques, qui tirent parti des API managées fournies avec IIS.

Outre les opérations liées au web, il existe la gestion des classes CertificateManager de toutes les opérations liées au certificat. Windows Server® 2008 a introduit de nouvelles API pour la gestion des certificats, et ces API de plateforme ne sont pas exposées en tant que code managé. CertificateManager utilise p/invoke pour encapsuler ces API en tant qu’API managées.

Le projet d’implémentation de service contient également certaines classes associées à la configuration pour permettre aux services d’utiliser les paramètres définis dans la configuration (par exemple, web.config, app.config, etc.).

Comme IIS 7.0 contient un grand nombre de paramètres, toutes les opérations de service n’ont pas été implémentées comme ce point. Nous continuerons à ajouter d’autres opérations lorsque le temps le permet. Toutefois, en suivant l’implémentation existante, il est assez facile d’étendre pour plus de fonctionnalités, si nécessaire par d’autres utilisateurs.

Sous-système FTP

Microsoft a créé un service FTP entièrement réécrit pour Windows Server® 2008. Ce nouveau service FTP intègre de nombreuses nouvelles fonctionnalités qui permettent aux auteurs web de publier du contenu mieux qu’auparavant et offre aux administrateurs Web davantage d’options de sécurité et de déploiement. Pour plus d’informations sur les services FTP récemment introduits, reportez-vous à des documentations connexes.

Schéma et diagrammes

Le système de configuration back-end pour le service FTP dans Windows Server 2008 est basé sur l’architecture système en tant que service IIS. Tous les paramètres FTP associés sont définis dans le fichier FTP_Schema.xml sous windows\system32\inetsrv\config. Le diagramme suivant montre un fragment du fichier de schéma :

Capture d’écran montrant le fragment de code du fichier de schéma.

L’implémentation du sous-système FTP suit le même modèle de conception que le sous-système web décrit ci-dessus. Il est illustré dans la capture d’écran suivante.

Capture d’écran de la structure de fichiers du sous-système web.

Étant donné que le service FTP est une extension du service IIS du point de vue de la configuration, les mêmes API managées : Microsoft.Web.Administration : sont utilisées tout au long de l’implémentation. La classe FTPManager contient toutes les implémentations réelles des opérations de service et dépend de la classe WebManager décrite ci-dessus pour réutiliser certaines des fonctionnalités.

Sous-système de stockage de contenu

Le sous-système de stockage de contenu fournit un ensemble de services permettant de gérer le contenu sur le système de fichiers Windows, tels que la création d’un répertoire, la définition des autorisations de répertoire/fichier et la gestion du quota de disque.

Schémas

Les diagrammes suivants montrent le même modèle de conception que celui utilisé pour implémenter des services pour le stockage de contenu. Certainement, différents systèmes de fichiers peuvent être implémentés en suivant le même modèle de conception.

L’implémentation réelle du service de stockage de contenu se trouve dans la classe ContentStorageManager dans le composant Microsoft.Hosting.Management, car ces fonctions peuvent être partagées par d’autres services.

Capture d’écran montrant la structure des contrats de données, des contrats de service et de l’implémentation de service.

Capture d’écran montrant la structure de la gestion de l’hébergement Microsoft.

Sous-système de compte d’utilisateur

Le sous-système compte d’utilisateur implémente les fonctions courantes de création de comptes d’utilisateur Windows locaux, d’utilisateurs Active Directory, d’unité d’organisation et de groupes.

Modèle de diagramme

Il suit le même modèle de conception que d’autres sous-systèmes. Il se compose de DataContracts, ServiceContracts et ServiceImplementation. Toutes les implémentations des opérations de service sont contenues dans la classe UserAccountManager dans le projet Microsoft.Hosting.Component.

Capture d’écran montrant le modèle de conception pour la classe gestionnaire de comptes d’utilisateur.

Sous-système SQL

Le sous-système SQL implémente un ensemble d’opérations pour la gestion des services associés à Microsoft SQL Server® 2005, tels que la création de base de données, la sauvegarde/restauration de base de données, etc. Il tire parti de Microsoft SQL Server SMO (SQL Management Objects) pour fournir toutes les fonctionnalités. Pour activer la compilation et l’exécution du service, les composants clients Microsoft SQL Server sont requis. Vous pouvez implémenter des opérations de service similaires pour différents produits de base de données, tels que Oracle et MySQL.

Diagramme d’implémentation

L’implémentation suit le même modèle de conception : il contient les DataContracts, ServiceContracts et ServiceImplementation, comme illustré ci-dessous.

Capture d’écran montrant le modèle de conception pour Microsoft hébergeant S Q L.

Hébergement des exemples de services

Deux solutions d’hébergement différentes ont été implémentées : l’hébergement basé sur IIS et l’hébergement basé sur le service Windows.

Options

Implémentez vos propres options d’hébergement préférées en suivant les documentations WCF pour savoir comment implémenter l’hébergement WCF :

Or

D’autres options sont disponibles dans l’hébergementWCF.

La figure suivante montre les deux solutions d’hébergement dans Visual Studio.

Capture d’écran montrant deux structures de solution d’hébergement.

Fournisseur de rôles de sécurité

L’exemple de code utilise le fournisseur de rôles Windows pour effectuer une vérification de rôle dans WCF sur chaque appel pour vérifier que l’appelant est membre du groupe WindowsBuiltInRole.Administrator. Cette opération est implémentée dans le fichier WindowsAuthorizationManager.cs dans le projet Microsoft.Hosting.Management, comme indiqué dans la figure ci-dessous.

Capture d’écran montrant le gestionnaire d’autorisation Windows dans la section Gestion de l’hébergement Microsoft sous composants.

Modification du rôle

S’il est nécessaire de modifier ce rôle, la méthode de modification est CheckAccessCore, illustrée dans la figure ci-dessous

Capture d’écran montrant un extrait de code de case activée cœur d’accès.