WMI-provider
Het WMIProvider-voorbeeld laat zien hoe u tijdens runtime gegevens van WCF-services (Windows Communication Foundation) verzamelt met behulp van de WMI-provider (Windows Management Instrumentation) die is ingebouwd in WCF. In dit voorbeeld ziet u ook hoe u een door de gebruiker gedefinieerd WMI-object toevoegt aan een service. Het voorbeeld activeert de WMI-provider voor aan de slag en laat zien hoe u tijdens runtime gegevens van de ICalculator
service verzamelt.
WMI is de implementatie van de Web-Based Enterprise Management -standaard (WBEM). Zie Windows Management Instrumentation voor meer informatie over de WMI SDK. WBEM is een industriestandaard voor de wijze waarop toepassingen beheer instrumentatie beschikbaar maken voor externe beheerhulpprogramma's.
WCF implementeert een WMI-provider, een onderdeel dat instrumentatie tijdens runtime beschikbaar maakt via een interface die compatibel is met WBEM. Beheerhulpprogramma's kunnen tijdens runtime verbinding maken met de services via de interface. WCF maakt kenmerken van services beschikbaar, zoals adressen, bindingen, gedrag en listeners.
De ingebouwde WMI-provider wordt geactiveerd in het configuratiebestand van de toepassing. Dit wordt gedaan via het wmiProviderEnabled
kenmerk van de <diagnostische gegevens> in de <sectie system.serviceModel>, zoals wordt weergegeven in de volgende voorbeeldconfiguratie:
<system.serviceModel>
...
<diagnostics wmiProviderEnabled="true" />
...
</system.serviceModel>
Deze configuratievermelding maakt een WMI-interface beschikbaar. Beheertoepassingen kunnen nu verbinding maken via deze interface en toegang krijgen tot de beheer instrumentatie van de toepassing.
Aangepast WMI-object
Als u WMI-objecten toevoegt aan een service, kunt u door de gebruiker gedefinieerde informatie samen met de ingebouwde WMI-providergegevens weergeven. Dit wordt bereikt door het schema van de service naar WMI te publiceren met behulp van de Installutil.exe-toepassing. Instructies om dit te doen, samen met meer informatie vindt u in de installatie-instructies aan het einde van het onderwerp.
WMI-gegevens openen
WMI-gegevens kunnen op veel verschillende manieren worden geopend. Microsoft biedt WMI-API's voor scripts, Visual Basic-toepassingen, C++-toepassingen en .NET Framework. Zie WMI gebruiken voor meer informatie.
In dit voorbeeld worden twee Java-scripts gebruikt: één om services op te sommen die op de computer worden uitgevoerd, samen met een aantal eigenschappen en de tweede om door de gebruiker gedefinieerde WMI-gegevens weer te geven. Het script opent een verbinding met de WMI-provider, parseert gegevens en geeft de verzamelde gegevens weer.
Start het voorbeeld om een actief exemplaar van een WCF-service te maken. Terwijl de service wordt uitgevoerd, voert u elk Java-script uit met behulp van de volgende opdracht bij de opdrachtprompt:
cscript EnumerateServices.js
Het script heeft toegang tot de instrumentatie in de service en produceert de volgende uitvoer:
Microsoft (R) Windows Script Host Version 5.6
Copyright © Microsoft Corporation 1996-2001. All rights reserved.
1 service(s) found.
|-PID: 5776
|-DistinguishedName: CalculatorService@http://localhost/ServiceModelSamples/service.svc
|-Endpoints: 1 endpoints
|-CalculatorService.ICalculator@http://localhost/ServiceModelSamples/service.svc
|-Address: http://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
Voer vervolgens het tweede Java-script uit om de door de gebruiker gedefinieerde WMI-gegevens weer te geven:
cscript EnumerateCustomObjects.js
Het script heeft toegang tot de door de gebruiker gedefinieerde instrumentatie in de services en produceert de volgende uitvoer:
1 WMIObject(s) found.
|-PID: 30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId: 3839
|-WMIInfo: User Defined WMI Information.
In de uitvoer ziet u dat er één service wordt uitgevoerd op de computer. De service maakt één eindpunt beschikbaar waarmee het ICalculator
contract wordt geïmplementeerd. De instellingen van het gedrag en de binding die door het eindpunt worden geïmplementeerd, worden vermeld als de som van afzonderlijke elementen van de berichtenstack.
WMI is niet beperkt tot het blootstellen van de beheerinstrumenten van de WCF-infrastructuur. De toepassing kan zijn eigen domeinspecifieke gegevensitems beschikbaar maken via hetzelfde mechanisme. WMI is een geïntegreerd mechanisme voor inspectie en controle van een webservice.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.
Publiceer het servicesschema naar WMI door de InstallUtil.exe uit te voeren (de standaardlocaties voor InstallUtil.exe is %WINDIR%\Microsoft.NET\Framework\v4.0.30319) op het service.dll-bestand in de hostingmap. Deze stap hoeft alleen te worden uitgevoerd wanneer er wijzigingen zijn aangebracht in het service.dll-bestand.
Als u het voorbeeld wilt uitvoeren in een configuratie van één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.
Notitie
Als u WCF hebt geïnstalleerd nadat u ASP.NET hebt geïnstalleerd, moet u mogelijk %WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe " -r -x uitvoeren om het ASPNET-account toestemming te geven om WMI-objecten te publiceren.
Bekijk gegevens uit het voorbeeld dat via WMI wordt weergegeven met behulp van de opdrachten:
cscript EnumerateServices.js
ofcscript EnumerateCustomObjects.js
.