Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O exemplo WMIProvider demonstra como coletar dados de serviços do WCF (Windows Communication Foundation) em runtime usando o provedor WMI (Instrumentação de Gerenciamento do Windows) integrado ao WCF. Além disso, este exemplo demonstra como adicionar um objeto WMI definido pelo usuário a um serviço. O exemplo ativa o provedor WMI para o Introdução e demonstra como coletar dados do serviço ICalculator em tempo de execução.
O WMI é a implementação da Microsoft do padrão Web-Based Enterprise Management (WBEM). Para obter mais informações sobre o SDK do WMI, consulte Instrumentação de Gerenciamento do Windows. O WBEM é um padrão do setor para como os aplicativos expõem a instrumentação de gerenciamento a ferramentas de gerenciamento externas.
O WCF implementa um provedor WMI, um componente que expõe a instrumentação em runtime por meio de uma interface compatível com WBEM. As ferramentas de gerenciamento podem se conectar aos serviços por meio da interface em runtime. O WCF expõe atributos de serviços como endereços, associações, comportamentos e ouvintes.
O provedor WMI interno é ativado no arquivo de configuração do aplicativo. Isso é realizado por meio do atributo wmiProviderEnabled de <diagnósticos> na seção <system.serviceModel>, conforme mostrado na seguinte configuração de exemplo:
<system.serviceModel>
...
<diagnostics wmiProviderEnabled="true" />
...
</system.serviceModel>
Essa entrada de configuração expõe uma interface WMI. Os aplicativos de gerenciamento agora podem se conectar por meio dessa interface e acessar a instrumentação de gerenciamento do aplicativo.
Objeto WMI personalizado
Adicionar objetos WMI a um serviço possibilita revelar informações definidas pelo usuário juntamente com as informações internas do provedor WMI. Isso é feito publicando o esquema do serviço no WMI usando o aplicativo Installutil.exe. Instruções para fazer isso, juntamente com mais detalhes podem ser encontradas nas instruções de instalação no final do tópico.
Acessando informações do WMI
Os dados do WMI podem ser acessados de várias maneiras diferentes. A Microsoft fornece APIs WMI para scripts, aplicativos do Visual Basic, aplicativos C++ e .NET Framework. Para obter mais informações, consulte UsandoWMI.
Este exemplo usa dois scripts Java: um para enumerar serviços em execução no computador, juntamente com algumas de suas propriedades e o segundo para exibir dados WMI definidos pelo usuário. O script abre uma conexão com o provedor WMI, analisa dados e exibe os dados coletados.
Inicie o exemplo para criar uma instância em execução de um serviço WCF. Enquanto o serviço estiver em execução, execute cada script Java usando o seguinte comando no prompt de comando:
cscript EnumerateServices.js
O script acessa a instrumentação contida no serviço e produz a seguinte saída:
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
Em seguida, execute o segundo Script Java para exibir os dados WMI definidos pelo usuário:
cscript EnumerateCustomObjects.js
O script acessa a instrumentação definida pelo usuário contida nos serviços e produz a seguinte saída:
1 WMIObject(s) found.
|-PID: 30285bfd-9d66-4c4e-9be2-310499c5cef5
|-InstanceId: 3839
|-WMIInfo: User Defined WMI Information.
A saída mostra que há um único serviço em execução no computador. O serviço expõe um endpoint que implementa o contrato ICalculator. As configurações do comportamento e da associação implementadas pelo ponto de extremidade são listadas como a soma de elementos individuais da pilha de mensagens.
O WMI não se limita a expor a instrumentação de gerenciamento da infraestrutura do WCF. O aplicativo pode expor seus próprios itens de dados específicos do domínio por meio do mesmo mecanismo. O WMI é um mecanismo unificado de inspeção e controle de um serviço Web.
Para configurar, compilar e executar o exemplo
Verifique se você executou o procedimento de instalaçãoOne-Time para os exemplos do Windows Communication Foundation.
Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.
Publique o esquema de serviços no WMI executando o comando InstallUtil.exe (o local padrão para InstallUtil.exe é "%WINDIR%\Microsoft.NET\Framework\v4.0.30319") no arquivo service.dll no diretório de hospedagem. Essa etapa só precisa ser executada quando forem feitas alterações no arquivo service.dll.
Para executar o exemplo em uma configuração de computador único ou cruzado, siga as instruções em Executar os exemplos do Windows Communication Foundation.
Observação
Se você instalou o WCF após instalar ASP.NET, talvez seja necessário executar "%WINDIR%\ Microsoft.Net\Framework\v3.0\Windows Communication Foundation\servicemodelreg.exe " -r -x para conceder permissão à conta ASPNET para publicar objetos WMI.
Exiba dados do exemplo exibidos por meio do WMI usando os comandos:
cscript EnumerateServices.jsoucscript EnumerateCustomObjects.js.