Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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
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.
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.
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.
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.
A WMI-vel felszínre kerülő mintából származó adatok megtekintése a következő parancsokkal:
cscript EnumerateServices.jsvagycscript EnumerateCustomObjects.js.