Creazione e ottimizzazioni GUID

Poiché un CLSID, come un identificatore di interfaccia (IID), è un GUID, nessun'altra classe, indipendentemente da chi lo scrive, ha un CLSID duplicato. Gli implementatori del server in genere ottengono CLSID tramite la funzione CoCreateGuid. Questa funzione è garantita per produrre CLSID univoci, quindi gli implementatori di server in tutto il mondo possono sviluppare e distribuire il software in modo indipendente senza timore di conflitti accidentali con il software scritto da altri.

L'uso di CLSID univoci evita la possibilità di conflitti di nomi tra le classi perché i CLSID non sono in alcun modo connessi ai nomi usati nell'implementazione sottostante. Ad esempio, due fornitori diversi possono scrivere classi denominate "StackClass", ma ognuna avrà un CLSID univoco e pertanto non può essere confusa.

COM deve spesso eseguire il mapping di GUID (IID e CLSID) a un set arbitrariamente elevato di altri valori. In qualità di sviluppatore di applicazioni, è possibile velocizzare tali ricerche e migliorare le prestazioni del sistema generando i GUID per l'applicazione come blocco di valori consecutivi.

Il modo più efficiente per generare un blocco di GUID consecutivi consiste nell'eseguire l'utilità uuidgen usando le opzioni -n e -x, che genera un blocco di UUID, ognuno dei cui primi valori DWORD viene incrementato di uno.

Ad esempio, se si desidera digitare

uuidgen -n5 -x

L'utilità uuidgen genera un blocco di UUID simile al seguente:

12340001-4980-1920-6788-123456789012
12340002-4980-1920-6788-123456789012
12340003-4980-1920-6788-123456789012
12340004-4980-1920-6788-123456789012
12340005-4980-1920-6788-123456789012
 

Un metodo per generare e tenere traccia dei GUID per un intero progetto inizia con la generazione di un blocco di un numero arbitrariamente elevato di UUID, ad esempio 500. Ad esempio, se si desidera digitare

uuidgen -n500 -x > guids.txt

l'utilità genera 500 UUID consecutivi e li scrive nel file di testo specificato. È quindi possibile archiviare questo file nell'albero di origine, fornendo un unico repository per tutti i GUID da usare in un progetto. Poiché gli utenti richiedono GUID per le parti del progetto, possono controllare il file, accettare quanti GUID hanno bisogno, contrassegnandoli come presi e lasciando una nota sulla posizione in cui vengono usati nel codice o nella "specifica".

Oltre a migliorare le prestazioni del sistema, la generazione di blocchi di GUID consecutivi in questo modo offre i vantaggi seguenti:

  • Un file centrale contenente tutti i GUID per un'applicazione semplifica la traccia dei GUID per cosa e quali utenti li usano.
  • Un blocco di GUID consecutivi associati a una particolare applicazione consente agli sviluppatori e ai tester di riconoscere i GUID interni durante il debug e semplifica la loro individuazione nel Registro di sistema perché vengono archiviati in sequenza.

Responsabilità del server COM