Tworzenie magazynu danych stanu dla zespołów współbieżnych
Podczas tworzenia własnych zestawów równoległych postępuj zgodnie z wytycznymi Wytyczne dotyczące tworzenia zestawów równoległych i utwórz dowolną bibliotekę DLL, która ma zostać dołączona do zestawu zgodnie z wytycznymi w Tworzenie biblioteki DLL dla zestawu równoległego.
Przestrzegaj następujących wytycznych dotyczących przechowywania stanu:
Zaprojektuj magazyn stanu, aby był zgodny z poprzednimi i przyszłymi wersjami. Spodziewaj się, że wersje będą używane w dowolnej kolejności: na przykład wersja 1, a następnie wersja 3, a następnie wersja 2.
Zainicjuj i ustaw domyślne ustawienia zestawu w kodzie zestawu. Nie zapisuj ustawień domyślnych w rejestrze.
Ustawienia rejestru muszą być zapisywane dla poszczególnych wersji, aby odizolować wiele wersji zestawu, które mogą być uruchamiane w tym samym czasie. Zaprojektuj zestaw side-by-side, aby prawidłowo przechowywać i obsługiwać stan zestawu podczas scenariuszy udostępniania równoległego.
Zestawy często przechowują informacje o stanie w kluczach rejestru. Utwórz zestaw plików nagłówkowych i funkcji pomocniczych, aby zapewnić łatwy sposób wersjonowania kluczy rejestru zawierających stan zespołu.
Wszystkie informacje o stanie zestawu zapisane w rejestrze muszą być odizolowane od innych wersji zestawu. Ustawienia stanu przechowywane w rejestrze muszą być zapisywane w poszczególnych sekcjach wersji rejestru. Jest to wymagane zarówno w częściach HKLM, jak i HKCU rejestru. Na przykład zapisz ustawienia stanu HKCU dla wersji zestawu XXXX w następującym kluczu rejestru:
HKCU\MyCompany\MyComponent\VersionXXXX
Wszelkie informacje o stanie przechowywane w rejestrze przez udostępnione zestawy muszą być zapisywane w poszczególnych sekcjach wersji rejestru. Na przykład ustawienie stanu o nazwie EnableSuperCoolFeature może mieć wartość true lub FALSE. Zapisz wartość dla współużytkowanego równoległego zestawu w następujący sposób:
HKEY_CurrentUser\Software\MyCompany\MyComponent\Wersja 01.01\EnableSuperCoolFeature = TRUE
Informacje o stanie, które są przechowywane w rejestrze przez zestawy prywatne, muszą być zapisywane w poszczególnych sekcjach aplikacji w rejestrze. Spowoduje to odizolowanie ustawień stanu zestawu w ramach aplikacji. Aby skonfigurować wirtualny katalog główny, możesz użyć funkcji GetModuleFileName. Jeśli na przykład wersja zestawu XXYY jest prywatnym zestawem "SomeApplication", wywołanie metody GetModuleFileName zwraca wartość "SomeApplication", a wszystkie ustawienia stanu prywatnego dla zestawu powinny zostać zapisane w następującym kluczu:
HKCU\MyCompany\MyComponent\VersionXXYY\SomeApplication
Ustaw ustawienia stanu współdzielonego przechowywane w rejestrze jako prywatne w kontekście zestawu, który działa. Aby skonfigurować wirtualny katalog główny, możesz użyć funkcji GetModuleFileName. Należy to zrobić dla gałęzi HKLM i HKCU.
W idealnym przypadku należy przyjąć model trwałości, w którym aplikacja utrzymuje stan i nie zmienia rejestru. Aplikacja nie powinna bezpośrednio dotykać wpisów rejestru składnika. Zamiast tego zestaw powinien oferować funkcje interfejsu API, które zapisują lub przywracają ustawienia zgodne obok siebie.
Zestawy mogą zapisywać ustawienia stanu w magazynach spoza rejestru, aby umożliwić zestawowi interakcję ze stanem globalnym. Zestawy równoległe mogą używać następujących magazynów zgodnych obok siebie:
- Chroniony magazyn (pstore)
- Pamięć podręczna WinInet
- Microsoft SQL Server