Udostępnij za pośrednictwem


Dostawca WMI

W przykładzie WMIProvider pokazano, jak zbierać dane z usług Windows Communication Foundation (WCF) w czasie wykonywania przy użyciu dostawcy instrumentacji zarządzania Windows (WMI), który jest wbudowany w usługę WCF. Ponadto w tym przykładzie pokazano, jak dodać obiekt WMI zdefiniowany przez użytkownika do usługi. Przykład aktywuje dostawcę WMI dla wprowadzenia i pokazuje, jak zbierać dane z ICalculator usługi w czasie wykonywania.

WMI to implementacja standardu WBEM (Web-Based Enterprise Management) firmy Microsoft. Aby uzyskać więcej informacji na temat zestawu WMI SDK, zobacz Instrumentacja zarządzania Windows. WBEM jest standardem branżowym służącym do uwidaczniania instrumentacji zarządzania przez zewnętrzne narzędzia do zarządzania.

WCF implementuje dostawcę WMI, składnik, który uwidacznia instrumentację w czasie wykonywania za pośrednictwem interfejsu zgodnego z WBEM. Narzędzia do zarządzania mogą łączyć się z usługami za pośrednictwem interfejsu w czasie wykonywania. Program WCF uwidacznia atrybuty usług, takie jak adresy, powiązania, zachowania i odbiorniki.

Wbudowany dostawca WMI jest aktywowany w pliku konfiguracji aplikacji. Odbywa się to za pomocą wmiProviderEnabled atrybutu <diagnostyki> w <sekcji system.serviceModel> , jak pokazano w następującej przykładowej konfiguracji:

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

Ten wpis konfiguracji uwidacznia interfejs WMI. Aplikacje do zarządzania mogą teraz łączyć się za pośrednictwem tego interfejsu i uzyskiwać dostęp do instrumentacji zarządzania aplikacji.

Niestandardowy obiekt WMI

Dodanie obiektów WMI do usługi umożliwia ujawnienie informacji zdefiniowanych przez użytkownika wraz z wbudowanymi informacjami o dostawcy usługi WMI. Jest to realizowane przez opublikowanie schematu usługi w usłudze WMI przy użyciu aplikacji Installutil.exe. Instrukcje dotyczące tego celu, wraz z bardziej szczegółowymi informacjami, można znaleźć w instrukcjach konfiguracji na końcu tematu.

Uzyskiwanie dostępu do informacji usługi WMI

Dostęp do danych usługi WMI można uzyskać na wiele różnych sposobów. Firma Microsoft udostępnia interfejsy API WMI dla skryptów, aplikacji Języka Visual Basic, aplikacji języka C++ i platformy .NET Framework. Aby uzyskać więcej informacji, zobacz Using WMI (Korzystanie z usługi WMI).

W tym przykładzie użyto dwóch skryptów Java: jeden do wyliczania usług uruchomionych na komputerze wraz z niektórymi właściwościami, a drugi do wyświetlania danych WMI zdefiniowanych przez użytkownika. Skrypt otwiera połączenie z dostawcą usługi WMI, analizuje dane i wyświetla zebrane dane.

Uruchom przykład, aby utworzyć uruchomione wystąpienie usługi WCF. Gdy usługa jest uruchomiona, uruchom każdy skrypt Java przy użyciu następującego polecenia w wierszu polecenia:

cscript EnumerateServices.js

Skrypt uzyskuje dostęp do instrumentacji zawartej w usłudze i generuje następujące dane wyjściowe:

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

Następnie uruchom drugi skrypt Java, aby wyświetlić dane WMI zdefiniowane przez użytkownika:

cscript EnumerateCustomObjects.js

Skrypt uzyskuje dostęp do instrumentacji zdefiniowanej przez użytkownika zawartej w usługach i generuje następujące dane wyjściowe:

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

Dane wyjściowe pokazują, że na komputerze działa jedna usługa. Usługa uwidacznia jeden punkt końcowy, który implementuje ICalculator kontrakt. Ustawienia zachowania i powiązania implementowane przez punkt końcowy są wyświetlane jako suma poszczególnych elementów stosu obsługi komunikatów.

Usługa WMI nie ogranicza się do uwidaczniania instrumentacji zarządzania infrastruktury WCF. Aplikacja może uwidocznić własne elementy danych specyficzne dla domeny za pomocą tego samego mechanizmu. WMI to ujednolicony mechanizm inspekcji i kontroli usługi internetowej.

Aby skonfigurować, skompilować i uruchomić przykład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

  3. Opublikuj schemat usług w usłudze WMI, uruchamiając InstallUtil.exe (domyślne lokalizacje dla InstallUtil.exe to "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") w pliku service.dll w katalogu hostingu. Ten krok należy wykonać tylko po wprowadzeniu zmian w pliku service.dll.

  4. Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.

    Uwaga

    Jeśli program WCF został zainstalowany po zainstalowaniu ASP.NET, może być konieczne uruchomienie polecenia "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe " -r -x, aby nadać konto ASPNET uprawnienia do publikowania obiektów WMI.

  5. Wyświetl dane z próbki udostępniane za pośrednictwem usługi WMI przy użyciu poleceń: cscript EnumerateServices.js lub cscript EnumerateCustomObjects.js.

Zobacz też