Common Information Model

Common Information Model (CIM) è un modello dati estensibile e orientato a oggetti che contiene informazioni relative a diverse parti di un'azienda. CIM è uno standard multipiattaforma gestito dalla DMTF (Distributed Management Task Force). Grazie a WMI, uno sviluppatore può utilizzare CIM per creare classi che rappresentino unità disco rigido, applicazioni, router di rete e persino tecnologie definite dall'utente, come un climatizzatore installato in rete. Mediante la visualizzazione e la modifica di una classe CIM, un responsabile può controllare diversi aspetti dell'azienda. Ad esempio, può eseguire una query nell'istanza di una classe CIM che rappresenta una workstation desktop e quindi eseguire uno script per modificare l'istanza della workstation CIM. WMI converte ogni modifica alla 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. CIM usa anche una tecnica denominata "associazione" per collegare diverse parti del modello aziendale e usa schemi per distinguere diversi ambienti di gestione.

CIM è progettato per presentare una visualizzazione coerente di oggetti logici e fisici in un ambiente di gestione. CIM rappresenta 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. Analogamente a un set di classi COM, il CIM non è associato ad alcuna piattaforma. WMI include tuttavia un'estensione per CIM che descrive le piattaforme del sistema operativo Microsoft Windows.

Il CIM definisce tre livelli di classi:

  • Core

    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.

  • Comuni

    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.

  • Extended

    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 e 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, __Dynasty e __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 del processore Win32_Processor. Tuttavia, una classe di associazione non deve associare due classi dipendenti. In realtà, lo scopo principale di una classe di associazione è mostrare relazioni tra classi che non dipendono necessariamente l'una dall'altra. Per altre informazioni, vedere Dichiarazione di una classe di associazione.

WMI supporta infine 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 estendibili all'infinito, 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 le proprietà dagli schemi CIM o Win32.