WMI-Anbieter
Dieses Beispiel veranschaulicht, wie Daten aus Windows Communication Foundation (WCF)-Diensten mithilfe des in WCF integrierten WMI-Anbieters (Windows Management Instrumentation, Windows-Verwaltungsinstrumentation) zur Laufzeit erfasst werden. Außerdem wird in diesem Beispiel gezeigt, wie einem Dienst ein benutzerdefiniertes WMI-Objekt hinzugefügt wird. Im Beispiel wird der WMI-Anbieter für das Beispiel 'Erste Schritte' aktiviert und gezeigt, wie Daten aus dem ICalculator
-Dienst zur Laufzeit erfasst werden.
Bei WMI handelt es sich um die Implementierung des Web-Based Enterprise Management (WBEM)-Standards von Microsoft. Weitere Informationen zum WMI-SDK finden Sie in der MSDN Library. (https://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi\_start\_page.asp) (möglicherweise nur in englischer Sprache). Bei WBEM handelt es sich um einen Industriestandard für das Verhalten von Anwendungen beim Verfügbarmachen der Verwaltungsinstrumentation für externe Verwaltungstools.
WCF implementiert einen WMI-Anbieter, eine Komponente, die die Instrumentation zur Laufzeit über eine WBEM-kompatible Schnittstelle verfügbar macht. Über die Schnittstelle können Verwaltungstools zur Laufzeit Verbindungen zu den Diensten herstellen. WCF macht Attribute von Diensten (wie Adressen, Bindungen, Verhaltensweisen und Listener) verfügbar.
Der integrierte WMI-Anbieter wird in der Konfigurationsdatei der Anwendung aktiviert. Dies erfolgt mithilfe des wmiProviderEnabled-Attributs vom <diagnostics> Element im system.ServiceModel element-Abschnitt (siehe folgende Beispielkonfiguration):
<system.serviceModel>
...
<diagnostics wmiProviderEnabled="true" />
...
</system.serviceModel>
Mit diesem Konfigurationseintrag wird eine WMI-Schnittstelle verfügbar gemacht. Über diese Schnittstelle kann nun von Verwaltungsanwendungen eine Verbindung hergestellt und auf die Verwaltungsinstrumentation der Anwendung zugegriffen werden.
Benutzerdefiniertes WMI-Objekt
Wenn einem Dienst WMI-Objekte hinzugefügt werden, können zusammen mit den Informationen des integrierten WMI-Anbieters auch benutzerdefinierte Informationen preisgegeben werden. Dies wird durchgeführt, indem das Schema des Diensts mithilfe der Anwendung "Installutil.exe" in WMI veröffentlicht wird. Eine Anleitung dazu und ausführlichere Informationen finden Sie in den Anweisungen zum Einrichten am Ende dieses Themas.
Zugreifen auf WMI-Informationen
Auf WMI-Daten kann auf mehreren Wegen zugegriffen werden. Microsoft stellt WMI-APIs für Skripts, Visual Basic-Anwendungen, C++-Anwendungen und die .NET Framework (https://msdn.microsoft.com/library/default.asp? url=/library/en-us/wmisdk/wmi/using_wmi.asp) bereit.
In diesem Beispiel werden zwei Javaskripts verwendet: das eine zum Auflisten der auf dem Computer ausgeführten Dienste mit einigen ihrer Eigenschaften und das andere zum Anzeigen benutzerdefinierter WMI-Daten. Das Skript öffnet eine Verbindung zum WMI-Anbieter, analysiert Daten und zeigt die erfassten Daten an.
Starten Sie das Beispiel, um eine laufende Instanz eines WCF-Diensts zu erstellen. Führen Sie mit dem folgenden Befehl jedes Javaskript in der Eingabeaufforderung aus, während der Dienst ausgeführt wird:
cscript EnumerateServices.js
Das Skript greift auf die im Dienst enthaltene Instrumentation zu und erzeugt die folgende Ausgabe:
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
1 service(s) found.
|-PID: 5776
|-DistinguishedName: CalculatorService@https://localhost/ServiceModelSamples/service.svc
|-Endpoints: 1 endpoints
|-CalculatorService.ICalculator@https://localhost/ServiceModelSamples/service.svc
|-Address: https://localhost/ServiceModelSamples/service.svc
|-CounterInstanceName:
|-AddressHeaders: 0
|-ContractType: Contract.Name='ICalculator'
|-BindingElements: 4 bindings
|-BindingElements[0]
|-Type: TransactionFlowBindingElement
|-BindingElements[1]
|-Type: SymmetricSecurityBindingElement
|-BindingElements[2]
|-Type: TextMessageEncodingBindingElement
|-MaxReadPoolSize: 64
|-MaxWritePoolSize: 16
|-BindingElements[3]
|-Type: HttpTransportBindingElement
|-ManualAddressing: false
|-MaxBufferSize: 65536
|-AllowCookies: false
|-AuthenticationScheme: Anonymous
|-BypassProxyOnLocal: false
|-HostNameComparisonMode: StrongWildcard
|-ProxyAddress: null
|-ProxyAuthenticationScheme: Anonymous
|-Realm:
|-TransferMode: Buffered
|-UseDefaultWebProxy: true
|-Behaviors: 5 behaviors
|-Behavior[0]
|-Type: ServiceBehaviorAttribute
|-AddressFilterMode: Exact
|-AutomaticSessionShutdown: true
|-ConcurrencyMode: Single
|-IncludeExceptionDetailInFaults: false
|-InstanceContextMode: PerSession
|-TransactionIsolationLevel: Unspecified
|-TransactionTimeout: null
|-ValidateMustUnderstand: true
|-Behavior[1]
|-Type: AspNetCompatibilityRequirementsAttribute
|-Behavior[2]
|-Type: ServiceDebugBehavior
|-Behavior[3]
|-Type: ServiceAuthorizationBehavior
|-Behavior[4]
|-Type: Behavior
Führen Sie danach das zweite Javaskript zum Anzeigen der benutzerdefinierten WMI-Daten aus:
cscript EnumerateCustomObjects.js
Das Skript greift auf die in den Diensten enthaltene benutzerdefinierte Instrumentation zu und erzeugt die folgende Ausgabe:
1 WMIObject(s) found.
|-PID: 30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId: 3839
|-WMIInfo: User Defined WMI Information.
Die Ausgabe zeigt an, dass auf dem Computer ein einziger Dienst ausgeführt wird. Der Dienst macht einen Endpunkt verfügbar, der den ICalculator
-Vertrag implementiert. Die Einstellungen des vom Endpunkt implementierten Verhaltens und der implementierten Bindung werden als Summe einzelner Elemente des Messagingstapels aufgeführt.
WMI beschränkt sich nicht darauf, die Verwaltungsinstrumentation der WCF-Infrastruktur verfügbar zu machen. Die Anwendung kann mithilfe desselben Mechanismus ihre eigenen domänenspezifischen Datenelemente verfügbar machen. WMI ist ein einheitlicher Mechanismus zur Kontrolle und Steuerung eines Webdiensts.
So richten Sie das Beispiel ein, erstellen es und führen es aus
Stellen Sie sicher, dass Sie die Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.
Zum Erstellen der C#- oder Visual Basic .NET-Version der Projektmappe folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
Veröffentlichen Sie das Dienstschema in WMI, indem Sie die "InstallUtil.exe" (die sich standardmäßig unter "%WINDIR%\Microsoft.NET\Framework\v2.0.50727" befindet) auf der Datei "service.dll" im Hostingverzeichnis ausführen. Dieser Schritt muss nur dann ausgeführt werden, wenn an der Datei "service.dll" Änderungen vorgenommen wurden. Weitere Informationen finden Sie unter "Providing Management Information by Instrumenting Applications" unter https://msdn2.microsoft.com/en-us/library/ms186147.aspx im Abschnitt "How To: Publish the Scheme to WMI for an Instrumented Application" (möglicherweise nur in englischer Sprache).
Wenn Sie das Beispiel in einer Konfiguration mit einem Computer oder computerübergreifend ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.
Tipp
Wenn Sie WCF nach der Installation von ASP.NET installiert haben, müssen Sie u. U. "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe -r –x" ausführen, um dem ASPNET-Konto die Berechtigung zum Veröffentlichen von WMI-Objekten zu erteilen.
Die per WMI verfügbar gemachten Daten aus dem Beispiel zeigen Sie mit den folgenden Befehlen an:
cscript EnumerateServices.js
odercscript EnumerateCustomObjects.js
.
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.