Exposition de données de gestion
Dans un scénario de gestion de données, le développeur peut décider d'exposer une classe pour la gestion.
Une classe .NET Framework est définie, implémentée et marquée pour la gestion. Ceci peut s'effectuer en utilisant l'attribut InstrumentationClass(InstrumentationType.Instance) sur la classe ou en la dérivant de la classe Instance. Ainsi est généré automatiquement le schéma WMI de la classe de code managé. Les instances de la classe sont exposées en tant qu'instances WMI, toutes les valeurs de propriété étant mappées.
La définition des classes d'instrumentation s'effectue au moment du design (ou au moment de la compilation) et ne constitue que la première moitié de la responsabilité d'une application. Au moment de l'exécution, il reste à l'application à fournir des données réelles. Les développeurs de code managé n'ont pas besoin d'apprendre de nouvelles méthodes pour formater les données dans une structure consommable par WMI. En utilisant les mêmes classes managées qui définissent les classes d'instrumentation WMI, les applications gérées fournissent des données en instanciant la classe et en remplissant les champs. Les données exposées à travers WMI sont lues directement dans les champs et les propriétés de classe managée.
En résumé, pour faire remonter des informations d'instrumentation à travers WMI, le développeur de code managé doit procéder de la façon suivante :
Définissez les classes managées (dans n'importe quel langage pris en charge) qui décrivent l'instrumentation.
Ces classes managées sont mappées sur des classes WMI sans qu'il soit nécessaire de comprendre les méthodes WMI, ni la grammaire à utiliser pour définir des classes WMI.
Au moment de l'exécution, les informations sont remontées à WMI en instanciant les classes, en remplissant les champs et en publiant les instances.
L'exemple de code suivant montre comment créer une classe d'instrumentation de gestion et comment publier une instance de cette classe vers WMI :
using System;
using System.Management;
using System.Configuration.Install;
using System.Management.Instrumentation;
// This example demonstrate how to define a management instrumentation
// class and how to publish an instance of this class to WMI.
// Specify which namespace the data should be published into
[assembly:Instrumented("root/default")]
// Let the system know InstallUtil.exe utility will be run against
// this assembly
[System.ComponentModel.RunInstaller(true)]
public class MyInstaller : DefaultManagementProjectInstaller {}
// Define a management instrumentation class
[InstrumentationClass(InstrumentationType.Instance)]
public class InstanceClass {
public string Name;
public int Number;
}
public class Sample_InstanceProvider {
public static int Main(string[] args) {
InstanceClass instClass = new InstanceClass();
instClass. Name = "Hello";
instClass. Number = 888;
// Publish this instance to WMI
Instrumentation.Publish(instClass);
Console.WriteLine("Instance now visible through WMI");
Console.ReadLine();
Instrumentation.Revoke(instClass); //optional
return 0;
}
}
[Visual Basic]
Imports System
Imports System.Management
Imports System.Configuration.Install
Imports System.Management.Instrumentation
' This example demonstrate how to define a management instrumentation
' class and how to publish an instance of this class to WMI.
' Specify which namespace the data should be published into
<assembly: Instrumented("Root/Default")>
' Let the system know InstallUtil.exe utility will be run against
' this assembly
<System.ComponentModel.RunInstaller(True)> _
Public Class MyInstaller
Inherits DefaultManagementProjectInstaller
End Class
' Create a management instrumentation instance class
<InstrumentationClass(InstrumentationType.Instance)> _
Public Class InstanceClass
Public Name As String
Public Number As Integer
End Class
Public Class Sample_InstanceProvider
Overloads Public Shared Function Main(args() As String) As Integer
Dim instClass As New InstanceClass()
instClass.Name = "Hello"
instClass.Number = 888
' Publish this instance to WMI
System.Management.Instrumentation.Instrumentation.Publish(instClass)
Console.WriteLine("Instance now visible through WMI")
Console.ReadLine()
System.Management.Instrumentation.Instrumentation.Revoke(instClass)
Return 0
End Function
End Class
Voir aussi
Instrumentation des applications .NET Framework avec System.Management | Classes et mappage dans CLI et WMI | Exposition d'événements de gestion | Héritage | Inscription du schéma pour une application instrumentée