Sdílet prostřednictvím


Poskytovatel WMI

Ukázka WMIProvider ukazuje, jak shromažďovat data ze služeb WCF (Windows Communication Foundation) za běhu pomocí zprostředkovatele WMI (Windows Management Instrumentation), který je integrovaný do WCF. Tato ukázka také ukazuje, jak do služby přidat uživatelem definovaný objekt WMI. Ukázka aktivuje zprostředkovatele rozhraní WMI pro začínáme a ukazuje, jak shromažďovat data ze ICalculator služby za běhu.

WMI je implementace standardu WBEM (Web-Based Enterprise Management) společnosti Microsoft. Další informace o sadě WMI SDK naleznete v tématu Windows Management Instrumentation. WBEM je oborový standard pro to, jak aplikace zpřístupňují instrumentaci správy externím nástrojům pro správu.

WCF implementuje zprostředkovatele WMI, komponentu, která zpřístupňuje instrumentaci za běhu prostřednictvím rozhraní kompatibilního s WBEM. Nástroje pro správu se můžou připojit ke službám prostřednictvím rozhraní za běhu. WCF zveřejňuje atributy služeb, jako jsou adresy, vazby, chování a naslouchací procesy.

Integrovaný zprostředkovatel rozhraní WMI se aktivuje v konfiguračním souboru aplikace. To se provádí prostřednictvím wmiProviderEnabled atributu <diagnostiky> v< části system.serviceModel>, jak je znázorněno v následující ukázkové konfiguraci:

<system.serviceModel>
    ...
    <diagnostics wmiProviderEnabled="true" />
    ...
</system.serviceModel>

Tato položka konfigurace zveřejňuje rozhraní WMI. Aplikace pro správu se teď můžou prostřednictvím tohoto rozhraní připojit a získat přístup k instrumentaci správy aplikace.

Vlastní objekt služby WMI

Přidání objektů rozhraní WMI do služby umožňuje odhalit uživatelem definované informace spolu s integrovanými informacemi zprostředkovatele rozhraní WMI. Toho se dosahuje publikováním schématu služby do rozhraní WMI pomocí aplikace Installutil.exe. Pokyny k tomuto účelu spolu s dalšími podrobnostmi najdete v pokynech k nastavení na konci tématu.

Přístup k informacím o rozhraní WMI

K datům rozhraní WMI je možné přistupovat mnoha různými způsoby. Microsoft poskytuje rozhraní WMI API pro skripty, aplikace jazyka Visual Basic, aplikace jazyka C++ a rozhraní .NET Framework. Další informace naleznete v tématu Použití rozhraní WMI.

Tato ukázka používá dva skripty Java: jeden k vytvoření výčtu služeb spuštěných v počítači spolu s některými jejich vlastnostmi a druhý k zobrazení uživatelem definovaných dat rozhraní WMI. Skript otevře připojení k poskytovateli rozhraní WMI, analyzuje data a zobrazí shromážděná data.

Spusťte ukázku a vytvořte spuštěnou instanci služby WCF. Zatímco je služba spuštěná, spusťte každý skript Java pomocí následujícího příkazu na příkazovém řádku:

cscript EnumerateServices.js

Skript přistupuje k instrumentaci obsažené ve službě a vytvoří následující výstup:

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

Potom spusťte druhý skript Java, který zobrazí uživatelsky definovaná data rozhraní WMI:

cscript EnumerateCustomObjects.js

Skript přistupuje k uživatelsky definované instrumentaci obsažené ve službách a vytvoří následující výstup:

1 WMIObject(s) found.
|-PID:           30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId:    3839
|-WMIInfo:       User Defined WMI Information.

Výstup ukazuje, že v počítači je spuštěná jedna služba. Služba zveřejňuje jeden koncový bod, který implementuje ICalculator kontrakt. Nastavení chování a vazby implementované koncovým bodem jsou uvedeny jako součet jednotlivých prvků zásobníku zasílání zpráv.

Rozhraní WMI není omezeno na zveřejnění instrumentace správy infrastruktury WCF. Aplikace může prostřednictvím stejného mechanismu zveřejnit vlastní datové položky specifické pro doménu. WMI je jednotný mechanismus kontroly a řízení webové služby.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázový postup instalace.

  2. Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.

  3. Publikujte schéma služeb do rozhraní WMI spuštěním InstallUtil.exe (výchozí umístění pro InstallUtil.exe je %WINDIR%\Microsoft.NET\Framework\v4.0.30319") v souboru service.dll v hostitelském adresáři. Tento krok je potřeba provést pouze v případě, že byly provedeny změny v souboru service.dll.

  4. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.

    Poznámka:

    Pokud jste nainstalovali WCF po instalaci ASP.NET, možná budete muset spustit %WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe " -r -x, aby byl účet ASPNET oprávnění publikovat objekty WMI.

  5. Pomocí příkazů můžete zobrazit data z ukázky zobrazené prostřednictvím rozhraní WMI: cscript EnumerateServices.js nebo cscript EnumerateCustomObjects.js.

Viz také