2012-01-19 8 views
5

Wiem, że można uderzyć w generowanie GUID na jednym i wielu komputerach i statystycznie jest mało prawdopodobne, aby kiedykolwiek wygenerować ten sam identyfikator GUID dwa razy.Czy identyfikatory GUID generowane na urządzeniach z systemem Windows CE przy użyciu .NET Compact Framework 3.5 są statystycznie unikatowe?

Istnieje wiele informacji na ten temat w Internecie.

Czy to samo można powiedzieć o 100 systemach Windows CE 4, 5 & 6 urządzeniach z aplikacjami opartymi na identyfikatorach GUID programu .NET Compact Framework 3.5?

Zakładam, że tak, ale nie mogę znaleźć żadnych informacji, które dowodzą, że system operacyjny WinCE używa liczb losowych i że są one odpowiednio losowe.

Czy ktoś może podać takie informacje i referencje?

Dzięki,

J.

+1

Perpetuum mobilne pytanie Stackoverflow. –

+0

Na węźle bocznym: nie ma czegoś takiego jak liczba losowa :-) – Matten

+0

Ah tak, ale tym razem jest na Windows CE !! Więc jest to zupełnie inne pytanie ...;) – RoboJ1M

Odpowiedz

6

Z early article na GUID dla .NET Compact Framework

Zespół .NET Compact Framework stale wykonanych kompromisów między rozmiaru ramy ślad, wydajności i czas wdrożenia. Pełna metoda .NET Framework Guid.NewGuid o nazwie wywołuje funkcję API systemu Windows CoCreateGuid, która wywołuje UuidCreate w celu wygenerowania globalnie unikalnych 128-bitowych liczb . Niestety, te funkcje nie są obsługiwane na komputerze kieszonkowym , dlatego metoda Guid.NewGuid nie została zaimplementowana dla .NET Compact Framework.

tym artykule zaproponowano algorytm, który równa się Windows w wersji

Okazuje się, że łatwo jest napisać niestandardową implementację metody Guid.NewGuid . Poniżej przedstawiono aplikację testową, która generuje identyfikatory GUID na Pocket PC. Używa niestandardowej klasy o nazwie PocketGuid, która używa tego samego algorytmu co GUID na pulpicie i jest opisana bardziej szczegółowo w dalszej części tego artykułu.

Od 2,0 rzeczywiste ramy kompaktowy zawiera metodę Guid.NewGuid, to myślę, że obejmowały wspomniany kod, który skutkuje tym samym strongness/wyjątkowości GUID na WinCE.

+0

Myślę, że moim najlepszym rozwiązaniem jest po prostu powiedzieć, że metoda .NET 2.0 CF do tworzenia identyfikatora GUID używa tej samej metody w przykładzie PocketGuid. – RoboJ1M

+0

Chociaż musiałem już argumentować, że metoda uzyskiwania losowej metody w PocketGuid jest wystarczająca__ ("Ale co, jeśli oba urządzenia podręczne zostaną uruchomione w tym samym czasie?) _ Może utworzyć ten sam numer!") – RoboJ1M

+0

Jak podano w artykule funkcja używa nie tylko znacznika czasu, ale także innych informacji związanych ze sprzętem. Tak więc nie powinno to powodować kolizji, gdy dwa urządzenia są uruchamiane w tym samym czasie, mam nadzieję, że :) – Matten

Powiązane problemy