GUID 创建和优化
由于 CLSID(如接口标识符(IID)是一个 GUID,所以无论谁写入它,都没有任何其他类具有重复的 CLSID。 服务器实现者通常通过 CoCreateGuid 函数获取 CLSID。 此函数可以保证生成独特的 CLSID,因此世界各地的服务器实现者可以独立开发和部署其软件,而不必担心意外与其他人编写的软件相冲突。
使用唯一 CLSID 可避免类之间发生名称冲突,因为 CLSID 与基础实现中使用的名称没有任何连接。 例如,两个不同的供应商可以编写名为“StackClass”的类,但每个供应商都有唯一的 CLSID,因此无法混淆。
COM 经常必须将 GUID(IID 和 CLSID)映射到一些任意大型的其他值集。 作为应用程序开发人员,可以通过生成应用程序的 GUID 作为连续值块来帮助加快此类搜索的速度,从而增强系统性能。
生成连续 GUID 块的最有效方法是使用 -n 和 -x 开关运行 uuidgen 实用工具,这将生成一个 UUID 块,每个 UUID 值都会递增一个。
例如,如果要键入
uuidgen -n5 -x
uuidgen 实用工具将生成类似于以下内容的 UUID 块:
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
生成和跟踪整个项目的 GUID 的一种方法首先生成一些任意数量的 UUID 块,例如 500。 例如,如果要键入
uuidgen -n500 -x > guids.txt
该实用工具将生成 500 个连续的 UUID 并将其写入指定的文本文件。 然后,可以将此文件签入源树,为项目中使用的所有 GUID 提供单个存储库。 由于用户需要项目部分的 GUID,他们可以签出文件,采取他们需要多少 GUID,将其标记为已拍摄,并记下他们正在使用的代码或“规范”中的哪个位置。
除了提高系统性能之外,以这种方式生成连续 GUID 块具有以下优势:
- 包含应用程序的所有 GUID 的中央文件可以轻松跟踪哪些 GUID 用于哪些 GUID 以及哪些人正在使用它们。
- 与特定应用程序关联的连续 GUID 块可帮助开发人员和测试人员在调试期间识别内部 GUID,并更轻松地在系统注册表中查找它们,因为它们是按顺序存储的。
相关主题