GUID 建立和優化
因為 CLSID,例如介面識別碼 (IID),是 GUID,不論寫入它的人員為何,都沒有任何其他類別具有重複的 CLSID。 伺服器實作者通常會透過 CoCreateGuid 函式取得 CLSID。 此函式保證會產生獨特的CLSID,因此世界各地的伺服器實作者可以獨立開發及部署其軟體,而不必擔心意外與其他人撰寫的軟體發生衝突。
使用唯一 CLSID 可避免類別之間發生名稱衝突的可能性,因為CLSID無法連線到基礎實作中使用的名稱。 例如,兩個不同的廠商可以撰寫稱為 「StackClass」 的類別,但每個廠商都會有唯一的 CLSID,因此無法混淆。
COM 經常必須將 GUID (IID 和 CLSID) 對應至一些任意大型的其他值集合。 身為應用程式開發人員,您可以藉由產生應用程式的 GUID 作為連續值的區塊,協助加速這類搜尋,進而增強系統效能。
產生連續 GUID 區塊的最有效率方式是使用 -n 和 -x 參數來執行 uuidgen 公用程式,這會產生 UUID 區塊,其中每個 DWORD 值都會遞增一個。
例如,如果您要輸入
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
例如 500,一個產生和追蹤整個專案的 GUID 的方法,一開始是產生一些任意大量 UUID 的區塊。 例如,如果您要輸入
uuidgen -n500 -x > guids.txt
公用程式會產生 500 個連續的 UUID,並將其寫入指定的文字檔。 然後,您可以將此檔案簽入來源樹狀結構,為專案中使用的所有 GUID 提供單一存放庫。 由於人員需要專案部分的 GUID,他們可以簽出檔案、取得所需的 GUID 數目、將它們標示為已取得,並留下有關他們在程式碼中的位置或「規格」的附註。
除了改善系統效能之外,以這種方式產生連續 GUID 區塊有下列優點:
- 包含應用程式所有 GUID 的中央檔案可讓您輕鬆地追蹤哪些 GUID 適用於哪些 GUID,以及哪些人正在使用這些 GUID。
- 與特定應用程式相關聯的連續 GUID 區塊可協助開發人員和測試人員在偵錯期間辨識內部 GUID,並讓您更輕鬆地在系統登錄中尋找它們,因為它們會循序儲存。
相關主題