Comment créer un module simple de Gestionnaire IIS
Le nouvel outil de gestion web d’IIS 7.0 et ses versions ultérieures est une plateforme de développement extensible. Les tiers peuvent développer et installer leurs propres fonctionnalités de gestion qui apparaissent comme fonctionnalités de première classe dans l’outil. Cet article illustre les tâches suivantes :
- Création du projet dans Microsoft Visual Studio ou Microsoft Visual C# Express afin que la bibliothèque puisse être utilisée dans InetMgr
- Création d’un fournisseur de module simple
- Création d’un module simple qui affiche une boîte de message.
Tâche 1 : Création du projet
Pour créer un module d’extensibilité pour InetMgr, vous devez créer un projet DLL (bibliothèque de liens dynamiques) également appelé projet de bibliothèque de classes. Cette DLL doit avoir un nom fort afin qu’elle puisse être inscrite dans le GAC (Global Assembly Cache), ce qui est une exigence pour les modules utilisés par InetMgr.
Cliquez sur Démarrer, cliquez sur Programmes, puis exécutez Microsoft Visual Studio 2005 ou Microsoft Visual C# 2005 Express Edition
Dans le menu Fichier, sélectionnez l’option Nouveau projet.
Dans la boîte de dialogue Nouveau projet, sélectionnez Bibliothèque de classes comme type de projet et tapez ExtensibilityDemo pour le nom du projet. Cliquez sur OK.
Supprimez le fichier Class1.cs ajouté par défaut (nous n’utiliserons pas ce fichier) à l’aide de l’option Supprimer dans le menu contextuel de l’Explorateur de solutions.
À l’aide de l’option Ajouter une référence... dans le menu Projet, ajoutez une référence à Microsoft.Web.Management.dll à partir de l’onglet Parcourir et recherchez-la dans le répertoire \Windows\system32\inetsrv. Il s’agit de la DLL qui contient toutes les classes d’extensibilité nécessaires afin de créer les modules pour InetMgr.
Étant donné que nous utilisons du code pour créer une IU basée sur WinForms, nous devons ajouter une référence à System.Windows.Forms.dll. Pour ce faire, utilisez l’option Ajouter une référence... dans le menu Projet et sélectionnez System.Windows.Forms.dll dans la liste d’assemblies .NET.
L’une des conditions requises pour les bibliothèques utilisées dans InetMgr est qu’elles doivent être inscrites dans le GAC. Vérifiez que la DLL est dotée d’un nom fort (parfois dite « Signée »). Visual Studio offre un moyen simple de créer de nouveaux noms. Utilisez le menu Projet et sélectionnez l’option Propriétés ExtensibilityDemo.
Dans l'onglet Signature, cochez la case Signer l'assembly.
Dans la zone de liste modifiable, sélectionnez l’option <Nouveau...> pour créer une nouvelle clé. Dans la boîte de dialogue Créer une clé de nom fort, tapez le nom DemoKey.snk pour la clé et décochez la case Protéger mon fichier de clé avec un mot de passe. Cliquez sur OK.
L’onglet de signature doit s’afficher comme suit :
Nous voulons que l’assembly se trouve dans le GAC. Ainsi, nous ajoutons des événements post-build afin que l’assembly soit automatiquement ajoutée au GAC chaque fois que nous compilons. Cela facilite le débogage et apporte des modifications à mesure que nous ajoutons de nouvelles fonctionnalités.
Sélectionnez l’onglet Événements de build et ajoutez la ligne de commande Événement post-build suivante :
CALL "%VS80COMNTOOLS%\vsvars32.bat" > NULL gacutil.exe /if "$(TargetPath)"
(Facultatif) Si vous utilisez Microsoft Visual Studio 2005, configurez correctement le débogage afin de pouvoir utiliser F5 pour exécuter le code. Dans les propriétés du projet, sélectionnez l’onglet Débogage et réglez-le pour qu’il démarre un programme externe qui sélectionne \windows\system32\inetsrv\inetmgr.exe.
Fermez les propriétés du projet et sélectionnez l’option Tout enregistrer dans le menu Fichier, puis définissez l’emplacement sur d:\Demos. Cliquez sur Enregistrer.
Vous pouvez désormais compiler le projet à l’aide de la Solution de build, dans le menu Build. Cette opération génère automatiquement la DLL et l’ajoute au GAC.
Remarque
Si la commande permettant de définir vsvars32.bat ne fonctionne pas et retourne un code d’erreur 9009, remplacez la commande ajoutée dans les événements Post Build à l’étape 8 en ajoutant le chemin complet à gacutil.exe. Par exemple :
"D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /if "$(TargetPath)"
Tâche 2 : Création d’un fournisseur de modules
Dans cette tâche, vous créez un fournisseur de modules. Il s’agit du point d’entrée principal pour l’inscription de modules dans InetMgr. Ces fournisseurs de modules sont répertoriés dans Administration.config.
Sélectionnez l’option Ajouter un nouvel élément dans le menu Projet. Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez le modèle de classe et tapez DemoModuleProvider.cs comme nom du fichier.
Modifiez le code pour qu’il ressemble à ceci :
using System; using System.Security; using Microsoft.Web.Management.Server; namespace ExtensibilityDemo { class DemoModuleProvider : ModuleProvider { public override Type ServiceType { get { return null; } } public override ModuleDefinition GetModuleDefinition(IManagementContext context) { return new ModuleDefinition(Name, typeof(DemoModule).AssemblyQualifiedName); } public override bool SupportsScope(ManagementScope scope) { return true; } } }
Ce code crée un ModuleProvider qui prend en charge tous les types de connexions (serveur, site et application) et inscrit un module côté client appelé DemoModule.
Tâche 3 : Création d’un module
Dans cette tâche, vous apprenez à créer un module. Un module est le point d’entrée principal du client pour tous les objets d’extensibilité. Il dispose d’une méthode principale appelée Initialiser. C’est la méthode dans laquelle toutes les actions se produisent.
Sélectionnez l’option Ajouter un nouvel élément dans le menu Projet. Sélectionnez le modèle de classe et tapez DemoModule.cs comme nom de fichier.
Modifiez le code pour qu’il ressemble à ceci :
using System; using System.Windows.Forms; using Microsoft.Web.Management.Client; using Microsoft.Web.Management.Server; namespace ExtensibilityDemo { internal class DemoModule : Module { protected override void Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo) { base.Initialize(serviceProvider, moduleInfo); MessageBox.Show("Hello World Inside InetMgr"); } } }
Tâche 4 : Tester le module
Dans cette tâche, vous ajoutez le nouveau module que vous avez créé. Pour cela, nous devons l’ajouter au fichier administration.config dans la liste moduleProviders.
Tout d’abord, nous devons trouver le nom complet de l’assembly que nous venons de créer. Il se présente sous la forme « ExtensibilityDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken={YourKey} ». Utilisez l’Explorateur Windows pour le trouver.
Ouvrez l’Explorateur Windows et naviguez vers le dossier *Windows\Assembly*.
Recherchez ExtensibilityDemo dans la liste des assemblies et cliquez dessus avec le bouton droit, puis sélectionnez les propriétés. Dans la boîte de dialogue, un champ appelé Jeton de clé publique s’affiche. Il nous faut cette valeur pour l’inscrire à InetMgr. Copiez-la donc dans le Presse-papiers.
De retour dans Microsoft Visual C# 2005 Express, sélectionnez l’option Ouvrir un fichier... sous le menu Fichier. Recherchez le fichier \Windows\System32\InetSrv\Administration.config.
Recherchez la section <moduleProviders> et ajoutez les éléments suivants. Veillez tout de même à remplacer le jeton de clé publique par celui que nous avons copié à l’étape 2 :
<moduleProviders> <add name="ExtensibilityDemo" type="ExtensibilityDemo.DemoModuleProvider, ExtensibilityDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bed679b1975c7f97" /> <moduleProviders>
Remarque
En l’ajoutant uniquement à la liste des moduleProviders, vous inscrivez le module uniquement pour les connexions serveur. Si vous souhaitez que ce module soit activé pour les connexions de site et les connexions d’application, ajoutez-le à la liste suivante :
<location path="."> <module> <add name="ExtensibilityDemo" /> </location>
Enregistrez le fichier et exécutez InetMgr. Connectez-vous à localhost. Le message suivant s’affiche :
Résumé
Cet article a détaillé comment créer un projet Visual Studio afin de développer des modules d’extensibilité pour le nouvel outil de gestion IIS. Nous avons créé un ModuleProvider simple et son module équivalent pour afficher un message.
Maintenant que vous comprenez les principes élémentaires de la création de modules d’outil de gestion IIS, vous pouvez explorer des fonctionnalités plus intéressantes disponibles pour l’extensibilité.