Dela via


Skapande och optimering av GUID

Eftersom ett CLSID, som en gränssnittsidentifierare (IID), är ett GUID, har ingen annan klass, oavsett vem som skriver det, ett duplicerat CLSID. Server-implementerare hämtar vanligtvis CLSID:er via funktionen CoCreateGuid. Den här funktionen är garanterad att producera unika CLSID:er, så att server-implementerare över hela världen kan utveckla och distribuera sin programvara oberoende utan rädsla för oavsiktlig kollision med programvara som skrivits av andra.

Med hjälp av unika CLSID:er undviker du risken för namnkollisioner mellan klasser eftersom CLSID:er inte på något sätt är anslutna till de namn som används i den underliggande implementeringen. Två olika leverantörer kan till exempel skriva klasser som kallas "StackClass", men var och en skulle ha ett unikt CLSID och kunde därför inte förväxlas.

COM måste ofta mappa GUID:er (IID och CLSID) till en godtyckligt stor uppsättning andra värden. Som programutvecklare kan du hjälpa till att påskynda sådana sökningar och därmed förbättra systemets prestanda genom att generera GUID:erna för ditt program som ett block med efterföljande värden.

Det mest effektiva sättet att generera ett block med efterföljande GUID:er är att köra uuidgen-verktyget med hjälp av -n- och -x-växlar, vilket genererar ett block med UUID:er, vars första DWORD-värde ökas med ett.

Om du till exempel skulle skriva

uuidgen -n5 -x

uuidgen-verktyget skulle generera ett block med UUID:ar som liknar följande:

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
 

En metod för att generera och spåra GUID:er för ett helt projekt börjar med att generera ett block med ett godtyckligt stort antal UUID:er, till exempel 500. Om du till exempel skulle skriva

uuidgen -n500 -x > guids.txt

verktyget skulle generera 500 på varandra följande UUID:er och skriva dem till den angivna textfilen. Du kan sedan checka in den här filen i källträdet och tillhandahålla en enda lagringsplats för alla GUID:er som ska användas i ett projekt. Eftersom personer behöver GUID för sina delar av projektet kan de checka ut filen, ta hur många GUID de behöver, markera dem som tagna och lämna en anteckning om var i koden eller "spec" de använder dem.

Förutom att förbättra systemets prestanda har generering av block med efterföljande GUID:er på detta sätt följande fördelar:

  • En central fil som innehåller alla GUID:er för ett program gör det enkelt att hålla reda på vilka GUID:er som är för vad och vilka personer som använder dem.
  • Ett block med efterföljande GUID:er som är associerade med ett visst program hjälper utvecklare och testare att identifiera interna GUID vid felsökning och gör det lättare att hitta dem i systemregistret eftersom de lagras sekventiellt.

COM-serveransvar