Common Information Model
Common Information Model (CIM) è un modello di dati estendibile orientato agli oggetti che contiene informazioni su parti diverse di un'organizzazione. Il CIM è uno standard multipiattaforma gestito da Distributed Management Task Force (DMTF). Tramite WMI, uno sviluppatore può usare il CIM per creare classi che rappresentano unità disco rigido, applicazioni, router di rete o persino tecnologie definite dall'utente, ad esempio un condizionatore di rete. Visualizzando e apportando modifiche a una classe CIM, un manager può controllare diversi aspetti dell'azienda. Ad esempio, un manager potrebbe eseguire una query su un'istanza della classe CIM che rappresenta una workstation desktop. Il manager potrebbe quindi eseguire uno script per modificare l'istanza della workstation CIM. WMI converte qualsiasi modifica nell'istanza della classe CIM della workstation in una modifica alla workstation effettiva.
CIM è un modello di programmazione indipendente dal linguaggio che usa tecniche orientate agli oggetti per descrivere un'azienda. Usando tre livelli di ereditarietà padre/figlio, il CIM può descrivere sia aspetti generali che specifici di un'azienda. Il CIM usa anche una tecnica denominata "associazione" per collegare diverse parti del modello aziendale e usa schemi per distinguere diversi ambienti di gestione.
Il CIM è progettato per presentare una visualizzazione coerente di oggetti logici e fisici in un ambiente di gestione. Il CIM rappresenta gli oggetti gestiti usando un costrutto orientato agli oggetti denominato "classe". Come una classe C++ o COM, una classe CIM può includere proprietà per descrivere i dati e i metodi per descrivere il comportamento. Come un set di classi COM, il CIM non è associato ad alcuna piattaforma. WMI include tuttavia un'estensione per il CIM che descrive le piattaforme del sistema operativo Microsoft Windows.
Il CIM definisce tre livelli di classi:
Nucleo
Le classi principali rappresentano oggetti gestiti che si applicano a tutte le aree di gestione. Queste classi forniscono un vocabolario di base per l'analisi e la descrizione dei sistemi gestiti. Le classi __Parameters e __SystemSecurity sono esempi di classi principali.
Comune
Le classi comuni rappresentano oggetti gestiti che si applicano a aree di gestione specifiche. Tuttavia, le classi comuni sono indipendenti da una particolare implementazione o tecnologia. Le classi comuni sono un'estensione delle classi principali. La classe CIM_UnitaryComputerSystem è un esempio di classe comune.
Esteso
Le classi estese rappresentano oggetti gestiti che sono aggiunte specifiche della tecnologia alle classi comuni. Una classe estesa si applica in genere a una piattaforma specifica, ad esempio UNIX o l'ambiente Microsoft Win32. La classe Win32_ComputerSystem è un esempio di classe estesa.
Uno sviluppatore può derivare una classe da un'altra classe. Una classe derivata rappresenta un caso speciale della classe padre ed eredita tutte le proprietà e i metodi dell'elemento padre. Ad esempio, Win32_ComputerSystem eredita da CIM_UnitaryComputerSystem. Le relazioni di ereditarietà possono essere determinate usando le proprietà di sistema __Derivation, __Dynastye __SuperClass. La proprietà di sistema __Derivation è una matrice di stringhe che elenca l'intera catena di ereditarietà fino alla classe radice, inclusa anche in __Dynasty. La proprietà di sistema __SuperClass mostra l'elemento padre immediato della classe corrente.
WMI supporta anche le associazioni. Un'associazione è una relazione tra due o più classi WMI diverse. Ad esempio, una workstation in esecuzione ha in genere un processore. La classe di associazione WMI Win32_ComputerSystemProcessor associa la classe workstation Win32_ComputerSystem alla classe processore Win32_Processor. Tuttavia, una classe di associazione non deve collegare due classi dipendenti insieme. Infatti, lo scopo principale di una classe di associazione è mostrare le relazioni tra classi che non dipendono necessariamente l'una dall'altra. Per altre informazioni, vedere dichiarazione di una classe di associazione.
Infine, WMI supporta il concetto di schemi. Nel contesto di WMI, uno schema è un gruppo di classi che descrivono un particolare ambiente di gestione. Microsoft Windows Software Development Kit (SDK) usa due schemi: lo schema CIM e lo schema Win32. I nomi delle classi dello schema CIM iniziano con CIM_e i nomi delle classi dello schema Win32 iniziano con Win32_. Lo schema CIM contiene le definizioni per le classi principali e comuni, mentre lo schema Win32 contiene le definizioni per le classi estese comuni all'ambiente Win32. Tuttavia, un fornitore di terze parti può creare schemi personalizzati per descrivere i requisiti specifici del fornitore. Poiché gli schemi sono progettati per essere infinitamente estendibili, uno sviluppatore può sempre aggiungere nuove classi per descrivere nuovi oggetti gestiti in un ambiente esistente. Per semplicità, tuttavia, la maggior parte dei fornitori sceglie di creare schemi che ereditano proprietà dagli schemi CIM o Win32.