WMIProvider 샘플은 WCF에 기본 제공되는 WMI(Windows Management Instrumentation) 공급자를 사용하여 런타임에 WCF(Windows Communication Foundation) 서비스에서 데이터를 수집하는 방법을 보여 줍니다. 또한 이 샘플에서는 사용자 정의 WMI 개체를 서비스에 추가하는 방법을 보여 줍니다. 샘플은 시작하기에 대한 WMI 공급자를 활성화하고, 런타임에 ICalculator 서비스에서 데이터를 수집하는 방법을 보여줍니다.
WMI는 Microsoft가 WBEM(Web-Based Enterprise Management) 표준을 구현한 것입니다. WMI SDK에 대한 자세한 내용은 Windows Management Instrumentation을 참조하세요. WBEM은 애플리케이션이 외부 관리 도구에 관리 계측을 노출하는 방법에 대한 업계 표준입니다.
WCF는 WBEM 호환 인터페이스를 통해 런타임에 계측을 노출하는 구성 요소인 WMI 공급자를 구현합니다. 관리 도구는 런타임에 인터페이스를 통해 서비스에 연결할 수 있습니다. 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 사용하는참조하세요.
이 샘플에서는 두 개의 Java 스크립트를 사용합니다. 하나는 컴퓨터에서 실행되는 서비스를 일부 속성과 함께 열거하고 다른 하나는 사용자 정의 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
다음으로 두 번째 Java 스크립트를 실행하여 사용자 정의 WMI 데이터를 표시합니다.
cscript EnumerateCustomObjects.js
스크립트는 서비스에 포함된 사용자 정의 계측에 액세스하고 다음 출력을 생성합니다.
1 WMIObject(s) found.
|-PID: 30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId: 3839
|-WMIInfo: User Defined WMI Information.
출력은 컴퓨터에서 실행되는 단일 서비스가 있음을 보여줍니다. 서비스는 계약을 구현하는 하나의 엔드포인트를 ICalculator 노출합니다. 엔드포인트에서 구현되는 동작 및 바인딩의 설정은 메시징 스택의 개별 요소의 합계로 나열됩니다.
WMI는 WCF 인프라의 관리 계측을 노출하는 데만 국한되지 않습니다. 애플리케이션은 동일한 메커니즘을 통해 자체 도메인별 데이터 항목을 노출할 수 있습니다. WMI는 웹 서비스의 검사 및 제어를 위한 통합 메커니즘입니다.
샘플을 설정, 빌드 및 실행하려면
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를 설치한 경우 "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe" -r -x 실행하여 ASPNET 계정에 WMI 개체를 게시할 수 있는 권한을 부여해야 할 수 있습니다.
명령어
cscript EnumerateServices.js또는cscript EnumerateCustomObjects.js를 사용하여 WMI를 통해 노출된 샘플 데이터를 확인합니다.