Megosztás:


WMI-szolgáltató

A WMIProvider-minta bemutatja, hogyan gyűjthet adatokat a Windows Communication Foundation (WCF) szolgáltatásokból futásidőben a WCF-be beépített Windows Management Instrumentation (WMI) szolgáltató használatával. Ez a minta azt is bemutatja, hogyan adhat hozzá felhasználó által definiált WMI-objektumot egy szolgáltatáshoz. A minta aktiválja a WMI-szolgáltatót az első lépésekhez , és bemutatja, hogyan gyűjthet adatokat a ICalculator szolgáltatásból futásidőben.

A WMI a Microsoft Web-Based Enterprise Management (WBEM) szabvány implementálása. A WMI SDK-val kapcsolatos további információkért lásd: Windows Management Instrumentation. A WBEM egy iparági szabvány arra vonatkozóan, hogy az alkalmazások hogyan teszik elérhetővé a felügyeleti rendszerállapotokat a külső felügyeleti eszközök számára.

A WCF implementál egy WMI-szolgáltatót, egy összetevőt, amely futásidőben teszi elérhetővé az instrumentálást egy WBEM-kompatibilis felületen keresztül. A felügyeleti eszközök futtatókörnyezetben az interfészen keresztül csatlakozhatnak a szolgáltatásokhoz. A WCF olyan szolgáltatások attribútumait teszi elérhetővé, mint a címek, kötések, viselkedések és figyelők.

A beépített WMI-szolgáltató aktiválva van az alkalmazás konfigurációs fájljában. Ez a wmiProviderEnabled attribútumon keresztül történik a <system.serviceModel> szakasz <diagnosztikájának> keretében, ahogyan az alábbi mintakonfiguráció is mutatja.

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

Ez a konfigurációs bejegyzés egy WMI-felületet tesz elérhetővé. A felügyeleti alkalmazások mostantól ezen az interfészen keresztül csatlakozhatnak, és hozzáférhetnek az alkalmazás felügyeleti rendszerállapotához.

Egyéni WMI-objektum

A WMI-objektumok szolgáltatáshoz való hozzáadása lehetővé teszi a felhasználó által definiált információk és a beépített WMI-szolgáltató adatainak megjelenítését. Ezt úgy teheti meg, hogy közzéteszi a szolgáltatás sémáját a WMI-ben a Installutil.exe alkalmazás használatával. Az ehhez szükséges utasítások és további részletek a témakör végén található telepítési utasításokban találhatók.

WMI-információk elérése

A WMI-adatok számos különböző módon érhetők el. A Microsoft WMI API-kat biztosít szkriptekhez, Visual Basic-alkalmazásokhoz, C++ alkalmazásokhoz és a .NET-keretrendszerhez. További információ: WMI-használata.

Ez a minta két Java-szkriptet használ: az egyik a számítógépen futó szolgáltatások számbavételére, néhány tulajdonságukkal együtt, a második pedig a felhasználó által definiált WMI-adatok megtekintésére. A szkript kapcsolatot nyit a WMI-szolgáltatóval, elemzi az adatokat, és megjeleníti az összegyűjtött adatokat.

Indítsa el a mintát egy WCF-szolgáltatás futó példányának létrehozásához. Miközben a szolgáltatás fut, futtassa az egyes Java-szkripteket a parancssorban található alábbi paranccsal:

cscript EnumerateServices.js

A szkript hozzáfér a szolgáltatásban található elemzőműszerekhez, és a következő kimenetet hozza létre:

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

Ezután futtassa a második Java-szkriptet a felhasználó által definiált WMI-adatok megjelenítéséhez:

cscript EnumerateCustomObjects.js

A szkript hozzáfér a szolgáltatásokban található felhasználó által definiált instrumentációhoz, és a következő kimenetet hozza létre:

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

A kimenet azt mutatja, hogy egyetlen szolgáltatás fut a számítógépen. A szolgáltatás egy végpontot tesz elérhetővé, amely megvalósítja a ICalculator szerződést. A végpont által implementált viselkedés és kötés beállításai az üzenetkezelési verem egyes elemeinek összegeként jelennek meg.

A WMI nem korlátozódik a WCF-infrastruktúra felügyeleti rendszerállapotának feltárására. Az alkalmazás ugyanazon a mechanizmuson keresztül teheti közzé saját tartományspecifikus adatelemeit. A WMI egy egységes mechanizmus egy webszolgáltatás vizsgálatára és vezérlésére.

A példa beállítása, elkészítése és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-mintákOne-Time beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  3. Hajtsa végre a szolgáltatási séma közzétételét a WMI-ben a InstallUtil.exe parancs futtatásával (a InstallUtil.exe alapértelmezett helye a "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") a service.dll fájlon az üzemeltetési könyvtárban. Ezt a lépést csak akkor kell végrehajtani, ha módosításokat hajtottak végre a service.dll fájlon.

  4. Ha a mintát egy- vagy számítógépközi konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.

    Megjegyzés:

    Ha ASP.NET telepítése után telepítette a WCF-et, előfordulhat, hogy a WMI-objektumok közzétételéhez az ASPNET-fiók engedélyének adásához "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe" -r -x kell futtatnia.

  5. A WMI-vel felszínre kerülő mintából származó adatok megtekintése a következő parancsokkal: cscript EnumerateServices.js vagy cscript EnumerateCustomObjects.js.

Lásd még