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 Distributed Management Task Force (DMTF). 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. Il CIM usa anche una tecnica denominata "associazione" per collegare diverse parti del modello aziendale insieme e usa schemi per distinguere ambienti di gestione diversi.

Il CIM è progettato per presentare una visualizzazione coerente di oggetti logici e fisici in un ambiente di gestione. CIM rappresenta gli oggetti gestiti usando un costrutto orientato all'oggetto 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 è collegato a nessuna 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 di base 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 di base.

  • 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 di base. 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 elencano l'intera catena di ereditarietà fino a e include la 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 di processore Win32_Processor. Tuttavia, una classe di associazione non deve legare due classi dipendenti insieme. Infatti, lo scopo principale di una classe di associazione consiste nel mostrare relazioni tra classi che non dipendono necessariamente tra loro. 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 determinato ambiente di gestione. Microsoft Windows Software Development Kit (SDK) usa due schemi: lo schema CIM e lo schema Win32. I nomi delle classi di schema CIM iniziano con CIM_ e i nomi delle classi di 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.