Modelo CIM
O CIM é um modelo de dados orientado a objeto e extensível que contém informações sobre diferentes partes de uma empresa. O CIM é um padrão multiplataforma mantido pela DMTF (Distributed Management Task Force). Por meio da WMI, um desenvolvedor pode usar o CIM para criar classes que representam discos rígidos, aplicativos, roteadores de rede ou, até mesmo, tecnologias definidas pelo usuário, como um ar condicionado conectado em rede. Ao exibir e fazer alterações em uma classe do CIM, um gerente pode controlar diferentes aspectos da empresa. Por exemplo, um gerente poderá consultar uma instância de classe do CIM que representa uma estação de trabalho desktop. Em seguida, o gerente poderá executar um script para modificar a instância da estação de trabalho do CIM. A WMI converterá qualquer alteração na instância da classe do CIM da estação de trabalho em uma alteração na estação de trabalho real.
O CIM é um modelo de programação independente de linguagem que usa técnicas orientadas a objetos para descrever uma empresa. Usando três níveis de herança pai/filho, o CIM pode descrever aspectos gerais e específicos de uma empresa. O CIM também usa uma técnica chamada "associação" para vincular diferentes partes do modelo empresarial e usa esquemas para distinguir diferentes ambientes de gerenciamento.
O CIM foi projetado para apresentar uma exibição consistente de objetos lógicos e físicos em um ambiente de gerenciamento. O CIM representa objetos gerenciados usando um constructo orientado a objeto chamado "classe". Assim como em uma classe C++ ou COM, uma classe CIM pode incluir propriedades para descrever dados e métodos para descrever o comportamento. Como um conjunto de classes COM, o CIM não está vinculado a nenhuma plataforma. No entanto, o WMI inclui uma extensão para o CIM que descreve as plataformas do sistema operacional Microsoft Windows.
O CIM define três níveis de classes:
Core
As classes principais representam objetos gerenciados que se aplicam a todas as áreas de gerenciamento. Essas classes fornecem um vocabulário básico para analisar e descrever sistemas gerenciados. As classes __Parameters e __SystemSecurity são exemplos de classes principais.
Comum
Classes comuns representam objetos gerenciados que se aplicam a áreas de gerenciamento específicas. No entanto, as classes comuns são independentes de uma implementação ou tecnologia específica. Classes comuns são uma extensão das classes principais. A classe CIM_UnitaryComputerSystem é um exemplo de uma classe comum.
Estendido
Classes estendidas representam objetos gerenciados que são adições específicas de tecnologia às classes comuns. Uma classe estendida normalmente se aplica a uma plataforma específica, como UNIX ou o ambiente Microsoft Win32. A classe Win32_ComputerSystem é um exemplo de uma classe estendida.
Um desenvolvedor pode derivar uma classe de outra classe. Uma classe derivada representa um caso especial da classe pai e herda todas as propriedades e métodos do pai. Por exemplo, a Win32_ComputerSystem herda da CIM_UnitaryComputerSystem. As relações de herança podem ser determinadas usando as propriedades do sistema __Derivation, __Dynasty e __SuperClass. A propriedade do sistema __Derivation é uma matriz de cadeias de caracteres que lista toda a cadeia de herança, desde as classes descendentes até a classe raiz, e inclui também a classe raiz em __Dynasty. A propriedade do sistema __SuperClass mostra o pai imediato da classe atual.
O WMI também dá suporte a associações. Uma associação é uma relação entre duas ou mais classes WMI diferentes. Por exemplo, uma estação de trabalho em execução geralmente tem um processador. A classe de associação WMI Win32_ComputerSystemProcessor associa a classe de estação de trabalho Win32_ComputerSystem à classe de processador Win32_Processor. No entanto, uma classe de associação não precisa unir duas classes dependentes. Na verdade, a principal finalidade de uma classe de associação é mostrar relações entre classes que não são necessariamente dependentes umas das outras. Para obter mais informações, consulte Declarar uma classe de associação.
Por fim, o WMI dá suporte ao conceito de esquemas. No contexto do WMI, um esquema é um grupo de classes que descreve um ambiente de gerenciamento específico. O SDK (Software Development Kit) do Microsoft Windows usa dois esquemas: o esquema CIM e o esquema Win32. Os nomes de classe do esquema CIM começam com CIM_ e os nomes de classe do esquema Win32 começam com Win32_. O esquema CIM contém as definições para as classes principais e comuns, enquanto o esquema Win32 contém as definições para as classes estendidas que são comuns ao ambiente Win32. No entanto, um fornecedor terceirizado pode criar seus próprios esquemas para descrever seus requisitos específicos. Como os esquemas foram projetados para serem infinitamente extensíveis, o desenvolvedor sempre pode adicionar novas classes para descrever novos objetos gerenciados em um ambiente existente. Porém, para simplificar, a maioria dos fornecedores opta por criar esquemas que herdam propriedades dos esquemas CIM ou Win32.