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,并更轻松地在系统注册表中查找它们,因为它们是按顺序存储的。

COM 服务器责任