Création et optimisations de GUID
Étant donné qu’un CLSID, comme un identificateur d’interface (IID), est un GUID, aucune autre classe, quel que soit son nom, n’a un CLSID en double. Les implémenteurs de serveur obtiennent généralement des CLSID via la fonction CoCreateGuid . Cette fonction est garantie pour produire des CLSID uniques, afin que les implémenteurs de serveurs du monde entier puissent développer et déployer indépendamment leurs logiciels sans craindre une collision accidentelle avec des logiciels écrits par d’autres.
L’utilisation de CLSID uniques évite la possibilité de collisions de noms entre classes, car les CLSID ne sont en aucun cas connectés aux noms utilisés dans l’implémentation sous-jacente. Par exemple, deux fournisseurs différents peuvent écrire des classes appelées « StackClass », mais chacune aurait un CLSID unique et ne pouvait donc pas être confondue.
COM doit souvent mapper des GUID (ID ET CLSID) à un ensemble arbitrairement volumineux d’autres valeurs. En tant que développeur d’applications, vous pouvez accélérer ces recherches et ainsi améliorer les performances du système en générant les GUID de votre application sous forme de bloc de valeurs consécutives.
Le moyen le plus efficace de générer un bloc de GUID consécutifs consiste à exécuter l’utilitaire uuidgen à l’aide des commutateurs -n et -x, qui génère un bloc d’UUIDs, dont chacun d’eux est incrémenté d’une seule valeur DWORD.
Par exemple, si vous devez taper
uuidgen -n5 -x
l’utilitaire uuidgen génère un bloc d’UUID semblable à ce qui suit :
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
Une méthode de génération et de suivi des GUID pour l’ensemble d’un projet commence par la génération d’un bloc d’un certain nombre arbitrairement élevé d’UUIDs, par exemple 500. Par exemple, si vous devez taper
uuidgen -n500 -x > guids.txt
l’utilitaire génère 500 UUID consécutifs et les écrit dans le fichier texte spécifié. Vous pouvez ensuite case activée ce fichier dans votre arborescence source, en fournissant un référentiel unique pour tous les GUID à utiliser dans un projet. Comme les utilisateurs ont besoin de GUID pour leurs parties du projet, ils peuvent case activée le fichier, prendre autant d’GUID dont ils ont besoin, les marquer comme pris et laisser une note sur l’emplacement dans le code ou la « spec » qu’ils utilisent.
En plus d’améliorer les performances du système, la génération de blocs de GUID consécutifs de cette façon présente les avantages suivants :
- Un fichier central contenant tous les GUID d’une application permet de suivre facilement quels GUID sont destinés à ce qui et quelles personnes les utilisent.
- Un bloc de GUID consécutifs associés à une application particulière aide les développeurs et les testeurs à reconnaître les GUID internes pendant le débogage et facilite leur recherche dans le registre système, car ils sont stockés de manière séquentielle.
Rubriques connexes