Udostępnij za pośrednictwem


Tworzenie i optymalizacje identyfikatora GUID

Ponieważ identyfikator CLSID, taki jak identyfikator interfejsu (IID), jest identyfikatorem GUID, bez względu na to, kto go pisze, ma zduplikowany identyfikator CLSID. Implementacje serwera zazwyczaj uzyskują identyfikatory CLSID za pośrednictwem funkcji CoCreateGuid. Ta funkcja ma gwarancję tworzenia unikatowych identyfikatorów CLSID, więc implementatory serwerów na całym świecie mogą niezależnie opracowywać i wdrażać swoje oprogramowanie bez obawy przed przypadkową kolizją z oprogramowaniem napisanym przez inne osoby.

Użycie unikatowych identyfikatorów CLSID pozwala uniknąć możliwości kolizji nazw między klasami, ponieważ identyfikatory CLSID nie są w żaden sposób połączone z nazwami używanymi w podstawowej implementacji. Na przykład dwóch różnych dostawców może pisać klasy o nazwie "StackClass", ale każdy z nich ma unikatowy identyfikator CLSID i dlatego nie może być zdezorientowany.

Com często musi mapować identyfikatory GUID (IDENTYFIKATORy IID i IDENTYFIKATORy CLSID) na dowolny duży zestaw innych wartości. Jako deweloper aplikacji możesz przyspieszyć takie wyszukiwania, a tym samym zwiększyć wydajność systemu, generując identyfikatory GUID dla aplikacji jako blok kolejnych wartości.

Najbardziej efektywnym sposobem wygenerowania bloku kolejnych identyfikatorów GUID jest uruchomienie narzędzia uuidgen przy użyciu przełączników -n i -x, które generują blok identyfikatorów UUID, z których każda z pierwszych wartości DWORD jest zwiększana o jeden.

Na przykład jeśli chcesz wpisać

uuidgen -n5 -x

narzędzie uuidgen wygeneruje blok identyfikatorów UUID podobnych do następujących:

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
 

Jedna metoda generowania i śledzenia identyfikatorów GUID dla całego projektu zaczyna się od generowania bloku niektórych arbitralnie dużej liczby identyfikatorów UUID, na przykład 500. Na przykład jeśli chcesz wpisać

-n500 -x > guids.txt uuidgen

narzędzie wygeneruje 500 kolejnych identyfikatorów UUID i zapisze je w określonym pliku tekstowym. Następnie możesz sprawdzić ten plik w drzewie źródłowym, podając pojedyncze repozytorium dla wszystkich identyfikatorów GUID, które mają być używane w projekcie. Ponieważ użytkownicy wymagają identyfikatorów GUID dla swoich części projektu, mogą wyewidencjonować plik, wziąć jednak wiele potrzebnych identyfikatorów GUID, oznaczając je jako podjęte i pozostawiając notatkę o tym, gdzie w kodzie lub "specyfikacji" używają ich.

Oprócz poprawy wydajności systemu generowanie bloków kolejnych identyfikatorów GUID w ten sposób ma następujące korzyści:

  • Centralny plik zawierający wszystkie identyfikatory GUID dla aplikacji ułatwia śledzenie, które identyfikatory GUID są używane przez użytkowników.
  • Blok kolejnych identyfikatorów GUID skojarzonych z określoną aplikacją ułatwia deweloperom i testerom rozpoznawanie wewnętrznych identyfikatorów GUID podczas debugowania i ułatwia znajdowanie ich w rejestrze systemowym, ponieważ są one przechowywane sekwencyjnie.

obowiązki serwera COM