Proveedor WMIWMI Provider

Este ejemplo muestra cómo recopilar los datos de servicios de Windows Communication Foundation (WCF) en tiempo de ejecución mediante el proveedor de Instrumental de administración de Windows (WMI) que está integrado en WCF.This sample demonstrates how to gather data from Windows Communication Foundation (WCF) services at runtime by using the Windows Management Instrumentation (WMI) provider that is built into WCF. Asimismo, este ejemplo muestra cómo agregar un objeto WMI definido por el usuario a un servicio.Also, this sample demonstrates how to add a user-defined WMI object to a service. El ejemplo activa el proveedor WMI para la Introducción y muestra cómo recopilar datos de la ICalculator servicio en tiempo de ejecución.The sample activates the WMI provider for the Getting Started and demonstrates how to gather data from the ICalculator service at runtime.

WMI es la implementación de Microsoft del estándar Web-Based Enterprise Management (WBEM).WMI is Microsoft's implementation of the Web-Based Enterprise Management (WBEM) standard. Para obtener más información sobre el SDK de WMI, consulte Windows Management Instrumentation.For more information about the WMI SDK, see Windows Management Instrumentation. WBEM es un estándar de la industria para saber cómo exponen las aplicaciones la instrumentación de administración a las herramientas de administración externas.WBEM is an industry standard for how applications expose management instrumentation to external management tools.

WCF implementa un proveedor WMI, un componente que expone la instrumentación en tiempo de ejecución a través de una interfaz compatible con WBEM.WCF implements a WMI provider, a component that exposes instrumentation at runtime through a WBEM-compatible interface. Las herramientas de administración pueden conectarse a los servicios a través de la interfaz en tiempo de ejecución.Management tools can connect to the services through the interface at runtime. WCF expone atributos de servicios como direcciones, enlaces, comportamientos y agentes de escucha.WCF exposes attributes of services such as addresses, bindings, behaviors, and listeners.

El proveedor de WMI integrado se activa en el archivo de configuración de la aplicación.The built-in WMI provider is activated in the configuration file of the application. Esto se realiza a través de la wmiProviderEnabled atributo de la <diagnóstico > en el <system.serviceModel > sección, como se muestra en el ejemplo siguiente configuración:This is done through the wmiProviderEnabled attribute of the <diagnostics> in the <system.serviceModel> section, as shown in the following sample configuration:

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

Esta entrada de configuración expone una interfaz WMI.This configuration entry exposes a WMI interface. Ahora, las aplicaciones de administración pueden establecer la conexión a través de esta interfaz y obtener acceso a la instrumentación de administración de la aplicación.Management applications can now connect through this interface and access the management instrumentation of the application.

Objeto WMI personalizadoCustom WMI Object

Agregar objetos WMI a un servicio permite revelar la información definida por el usuario junto con la información de proveedor WMI integrada.Adding WMI objects to a service makes it possible to reveal user-defined information along with the built-in WMI provider information. Esto se logra publicando el esquema del servicio en WMI mediante la aplicación Installutil.exe.This is accomplished by publishing the schema of the service to WMI by using the Installutil.exe application. Las instrucciones para conseguirlo, además de más información, se pueden encontrar en las instrucciones de configuración al final del tema.Instructions to accomplish this, along with more details can be found in the setup instructions at the end of the topic.

Acceso a la información de WMIAccessing WMI Information

Se puede tener acceso a los datos de WMI de maneras muy distintas.WMI data can be accessed many different ways. Microsoft proporciona las API de WMI para scripts, aplicaciones de Visual Basic, aplicaciones de C++ y la .NET Framework.NET Framework (http://msdn.microsoft.com/library/default.asp?url=/library/wmisdk/wmi/using_wmi.asp).Microsoft provides WMI APIs for scripts, Visual Basic applications, C++ applications, and the .NET Framework.NET Framework (http://msdn.microsoft.com/library/default.asp?url=/library/wmisdk/wmi/using_wmi.asp).

Este ejemplo utiliza dos scripts Java: uno para enumerar los servicios que se ejecutan en el equipo junto con algunas de sus propiedades y otro para ver los datos de WMI definidos por el usuario.This sample uses two Java scripts: one to enumerate services running on the computer along with some of their properties and the second to view user-defined WMI data. El script abre una conexión con el proveedor WMI, analiza los datos y muestra los datos recopilados.The script opens a connection to the WMI provider, parses data, and displays the data gathered.

Iniciar el ejemplo para crear una instancia en ejecución de un servicio WCF.Start the sample to create a running instance of a WCF service. Mientras el servicio se está ejecutando, ejecute cada script de Java usando el comando siguiente en el símbolo del sistema:While the service is running, run each Java script by using the following command at the command prompt:

cscript EnumerateServices.js  

El script obtiene acceso al instrumental contenido en el servicio y genera la salida siguiente:The script accesses the instrumentation contained in the service and produces the following output:

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  

Después, ejecute el segundo script de Java para mostrar los datos de WMI definidos por el usuario:Next, run the second Java Script to display the user-defined WMI data:

cscript EnumerateCustomObjects.js  

El script tiene acceso al instrumental definido por el usuario contenido en los servicios y genera el resultado siguiente:The script accesses the user-defined instrumentation contained in the services and produces the following output:

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

El resultado muestra que hay un único servicio que se ejecuta en el equipo.The output shows that there is a single service running on the computer. El servicio expone un extremo que implementa el contrato ICalculator.The service exposes one endpoint that implements the ICalculator contract. Los valores del comportamiento y enlace que el punto de conexión implementa se muestran como la suma de elementos individuales de la pila de mensajería.The settings of the behavior and binding that are implemented by the endpoint are listed as the sum of individual elements of the messaging stack.

WMI no se limita a exponer el Instrumental de administración de la infraestructura de WCF.WMI is not limited to exposing the management instrumentation of the WCF infrastructure. La aplicación puede exponer sus propios elementos de datos específicos del dominio a través del mismo mecanismo.The application can expose its own domain-specific data items through the same mechanism. WMI es un mecanismo unificado para la inspección y control de un servicio Web.WMI is a unified mechanism for inspection and control of a Web service.

Configurar, compilar y ejecutar el ejemploTo set up, build, and run the sample

  1. Asegúrese de que ha llevado a cabo la procedimiento de instalación de un solo uso para los ejemplos de Windows Communication Foundation.Ensure you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Publique el esquema de los servicios en WMI ejecutando InstallUtil.exe (las ubicaciones predeterminadas para Installutil.exe son "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") en el archivo service.dll del directorio de hospedaje.Publish the services schema to WMI by running the InstallUtil.exe (the default locations for InstallUtil.exe is "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") on the service.dll file in the hosting directory. Este paso solo debe ejecutarse cuando se hayan realizado cambios en el archivo service.dll.This step only needs to be executed when changes have been made to the service.dll file. Para obtener más información, vea proporcionar información de administración mediante la instrumentación de aplicaciones en: http://msdn2.microsoft.com/library/ms186147.aspx en la sección "Cómo para: publicar el esquema a WMI para una aplicación instrumentada".For more information, see Providing Management Information by Instrumenting Applications at: http://msdn2.microsoft.com/library/ms186147.aspx in the "How To: Publish the Scheme to WMI for an Instrumented Application" section.

  4. Para ejecutar el ejemplo en una configuración de equipo único o varios, siga las instrucciones de ejecutando los ejemplos de Windows Communication Foundation.To run the sample in a single- or cross-computer configuration, follow the instructions in Running the Windows Communication Foundation Samples.

    Nota

    Si ha instalado WCF después de instalar ASP.NET, debe ejecutar "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe "- r - x para proporcionar a la cuenta de ASPNET permiso para publicar objetos WMI.If you installed WCF after installing ASP.NET, you may need to run "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe " -r -x to give the ASPNET account permission to publish WMI objects.

  5. Vea los datos del ejemplo que aparece mediante WMI con los comandos: cscript EnumerateServices.js o cscript EnumerateCustomObjects.js.View data from the sample surfaced through WMI by using the commands: cscript EnumerateServices.js or cscript EnumerateCustomObjects.js.

Importante

Puede que los ejemplos ya estén instalados en su equipo.The samples may already be installed on your computer. Compruebe el siguiente directorio (predeterminado) antes de continuar.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Si este directorio no existe, vaya a Windows Communication Foundation (WCF) y ejemplos de Windows Workflow Foundation (WF) para .NET Framework 4 para descargar todos los Windows Communication Foundation (WCF) y WFWF ejemplos.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Este ejemplo se encuentra en el siguiente directorio.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Management\WMIProvider

Vea tambiénSee Also

Ejemplos de supervisión de AppFabricAppFabric Monitoring Samples