Partager via


Création et optimisations guid

Étant donné qu’un CLSID, comme un identificateur d’interface (IID), est un GUID, aucune autre classe, quelle que soit la personne qui l’écrit, a un CLSID en double. Les implémenteurs de serveur obtiennent généralement des CLSID via la fonction CoCreateGuid. Cette fonction est garantie de produire des CLSID uniques, de sorte que les implémenteurs de serveur dans le monde peuvent développer et déployer indépendamment leurs logiciels sans crainte de collision accidentelle avec les logiciels écrits par d’autres utilisateurs.

L’utilisation de CLSID uniques évite la possibilité de collisions de noms entre les classes, car les CLSID ne sont pas 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 d’elles aurait un CLSID unique et ne pouvait donc pas être confondue.

COM doit souvent mapper des GUID (IID et CLSID) à un ensemble arbitrairement volumineux d’autres valeurs. En tant que développeur d’applications, vous pouvez accélérer ces recherches et améliorer ainsi les performances du système en générant les GUID de votre application en tant que bloc de valeurs consécutives.

La façon la 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, ce qui génère un bloc d’UUID, dont la première valeur DWORD est incrémentée par un.

Par exemple, si vous deviez taper

uuidgen -n5 -x

l’utilitaire uuidgen génère un bloc d’UUID similaire à 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 un projet entier commence par générer un bloc d’un certain nombre arbitrairement important d’UUID, par exemple 500. Par exemple, si vous deviez taper

-n500 -x > guids.txt uuidgen

l’utilitaire génère 500 UUID consécutifs et les écrit dans le fichier texte spécifié. Vous pouvez ensuite vérifier ce fichier dans votre arborescence source, en fournissant un référentiel unique pour tous les GUID à utiliser dans un projet. Étant donné que les utilisateurs ont besoin de GUID pour leurs parties du projet, ils peuvent extraire le fichier, prendre toutefois de nombreuses GUID dont ils ont besoin, les marquer comme pris et laisser une note sur l’emplacement dans le code ou « spec » qu’ils utilisent.

En plus d’améliorer les performances du système, la génération de blocs de GUID consécutifs présente les avantages suivants :

  • Un fichier central contenant tous les GUID d’une application permet de suivre facilement les GUID qui sont destinés à ce que les utilisateurs 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.

responsabilités du serveur COM