Creación y optimizaciones de GUID
Dado que un CLSID, como un identificador de interfaz (IID), es un GUID, ninguna otra clase, independientemente de quién lo escriba, tenga un CLSID duplicado. Los implementadores de servidor suelen obtener CLSID a través de la función CoCreateGuid . Esta función se garantiza para producir CLSID únicos, por lo que los implementadores de servidor en todo el mundo pueden desarrollar e implementar su software de forma independiente sin miedo a la colisión accidental con el software escrito por otros usuarios.
El uso de CLSID únicos evita la posibilidad de colisiones de nombres entre clases porque los CLSID no están conectados de ninguna manera a los nombres usados en la implementación subyacente. Por ejemplo, dos proveedores diferentes pueden escribir clases denominadas "StackClass", pero cada uno tendría un CLSID único y, por lo tanto, no se pudo confundir.
COM con frecuencia debe asignar GUID (IID y CLSID) a un conjunto arbitrariomente grande de otros valores. Como desarrollador de aplicaciones, puede ayudar a acelerar estas búsquedas y, por tanto, mejorar el rendimiento del sistema mediante la generación de los GUID para la aplicación como un bloque de valores consecutivos.
La manera más eficaz de generar un bloque de GUID consecutivos es ejecutar la utilidad uuidgen mediante los modificadores -n y -x, que genera un bloque de UUID, cada uno de cuyos primeros valores DWORD se incrementa en uno.
Por ejemplo, si va a escribir
uuidgen -n5 -x
la utilidad uuidgen generaría un bloque de UUID similares a los siguientes:
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 método para generar y realizar el seguimiento de GUID para un proyecto completo comienza por generar un bloque de algunos UUID arbitrariamente grandes, por ejemplo, 500. Por ejemplo, si va a escribir
uuidgen -n500 -x > guids.txt
la utilidad generaría 500 UUID consecutivos y los escribiría en el archivo de texto especificado. Después, podría comprobar este archivo en el árbol de origen, lo que proporciona un único repositorio para que todos los GUID se usen en un proyecto. A medida que las personas requieren GUID para sus partes del proyecto, pueden consultar el archivo, tomar sin embargo muchos GUID que necesitan, marcarlos como tomados y dejar una nota sobre dónde en el código o "especificación" que están usando.
Además de mejorar el rendimiento del sistema, la generación de bloques de GUID consecutivos de esta manera tiene las siguientes ventajas:
- Un archivo central que contiene todos los GUID de una aplicación facilita el seguimiento de qué GUID son para qué y qué personas usan.
- Un bloque de GUID consecutivos asociados a una aplicación determinada ayuda a los desarrolladores y evaluadores a reconocer GUID internos durante la depuración y facilita su búsqueda en el registro del sistema porque se almacenan secuencialmente.
Temas relacionados