WMIProvider サンプルでは、WCF に組み込まれている Windows Management Instrumentation (WMI) プロバイダーを使用して、実行時に Windows Communication Foundation (WCF) サービスからデータを収集する方法を示します。 また、このサンプルでは、ユーザー定義 WMI オブジェクトをサービスに追加する方法を示します。 このサンプルでは、 作業の開始 のために WMI プロバイダーをアクティブ化し、実行時に ICalculator
サービスからデータを収集する方法を示します。
WMI は、Microsoft の Web-Based Enterprise Management (WBEM) 標準の実装です。 WMI SDK の詳細については、「 Windows Management Instrumentation」を参照してください。 WBEM は、アプリケーションが管理インストルメンテーションを外部管理ツールに公開する方法の業界標準です。
WCF は WMI プロバイダーを実装します。これは、WBEM 互換インターフェイスを介して実行時にインストルメンテーションを公開するコンポーネントです。 管理ツールは、実行時にインターフェイスを介してサービスに接続できます。 WCF は、アドレス、バインディング、動作、リスナーなどのサービスの属性を公開します。
組み込みの WMI プロバイダーは、アプリケーションの構成ファイルでアクティブ化されます。 これは、次のサンプル構成に示すように、wmiProviderEnabled
<> セクションの <> の属性を使用して行われます。
<system.serviceModel>
...
<diagnostics wmiProviderEnabled="true" />
...
</system.serviceModel>
この構成エントリは、WMI インターフェイスを公開します。 管理アプリケーションは、このインターフェイスを介して接続し、アプリケーションの管理インストルメンテーションにアクセスできるようになりました。
カスタム WMI オブジェクト
WMI オブジェクトをサービスに追加すると、組み込みの WMI プロバイダー情報と共にユーザー定義情報を表示できます。 これを行うには、Installutil.exe アプリケーションを使用してサービスのスキーマを WMI に発行します。 これを行う手順と詳細については、トピックの最後にあるセットアップ手順を参照してください。
WMI 情報へのアクセス
WMI データには、さまざまな方法でアクセスできます。 Microsoft では、スクリプト、Visual Basic アプリケーション、C++ アプリケーション、および .NET Framework 用の WMI API を提供しています。 詳細については、「WMIの使用」を参照してください。
このサンプルでは、2 つの Java スクリプトを使用します。1 つはコンピューターで実行されているサービスとそのプロパティの一部を列挙し、もう 1 つはユーザー定義 WMI データを表示します。 このスクリプトは、WMI プロバイダーへの接続を開き、データを解析して、収集されたデータを表示します。
サンプルを開始して、WCF サービスの実行中のインスタンスを作成します。 サービスの実行中に、コマンド プロンプトで次のコマンドを使用して、各 Java スクリプトを実行します。
cscript EnumerateServices.js
このスクリプトは、サービスに含まれるインストルメンテーションにアクセスし、次の出力を生成します。
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
次に、2 番目の Java スクリプトを実行して、ユーザー定義 WMI データを表示します。
cscript EnumerateCustomObjects.js
このスクリプトは、サービスに含まれるユーザー定義のインストルメンテーションにアクセスし、次の出力を生成します。
1 WMIObject(s) found.
|-PID: 30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId: 3839
|-WMIInfo: User Defined WMI Information.
出力は、コンピューター上で実行されている 1 つのサービスがあることを示しています。 サービスは、 ICalculator
コントラクトを実装する 1 つのエンドポイントを公開します。 エンドポイントによって実装される動作とバインドの設定は、メッセージング スタックの個々の要素の合計として一覧表示されます。
WMI は、WCF インフラストラクチャの管理インストルメンテーションを公開することに限定されません。 アプリケーションは、同じメカニズムを使用して、独自のドメイン固有のデータ項目を公開できます。 WMI は、Web サービスの検査と制御のための統合メカニズムです。
サンプルを設定、ビルド、実行するには
Windows Communication Foundation サンプルのOne-Time セットアップ手順を実行していることを確認します。
ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
ホスティング ディレクトリ内の service.dll ファイルの InstallUtil.exe (InstallUtil.exe の既定の場所は "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") を実行して、WMI にサービス スキーマを発行します。 この手順は、service.dll ファイルに変更が加えられた場合にのみ実行する必要があります。
シングル コンピューター構成またはクロスコンピューター構成でサンプルを実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。
注
ASP.NET のインストール後に WCF をインストールした場合は、WMI オブジェクトを発行するアクセス許可を ASPNET アカウントに付与するために、"%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe" -r -x を実行することが必要になる場合があります。
またはコマンドを使用して、WMI を介して表示されたサンプルのデータを表示します。