Являются ли GUID, сгенерированные на устройствах Windows CE с использованием .NET Compact Framework 3.5, статистически уникальными? - PullRequest
5 голосов
/ 19 января 2012

Я знаю, что вы можете отказаться от генерации GUID на одной и нескольких машинах, и статистически маловероятно, что когда-нибудь один и тот же GUID сгенерируется дважды.

В интернете много информации, подтверждающей это.

То же самое можно сказать и о сотнях устройств Windows CE 4, 5 и 6, на которых выполняются приложения на основе .NET Compact Framework 3.5, генерирующие идентификаторы GUID?

Я предполагаю, что да, но не могу найти никакой информации, доказывающей, что ОС WinCE использует случайные числа и что они являются случайными.

Кто-нибудь может предоставить такую ​​информацию и ссылки?

Спасибо

J.

1 Ответ

6 голосов
/ 19 января 2012

Из ранней статьи о Guid для .NET Compact Framework

Команда .NET Compact Framework постоянно находила компромисс между размером занимаемой площади, производительностью и временем внедрения,Полный метод .NET Framework Guid.NewGuid вызывает функцию Windows API CoCreateGuid, которая вызывает UuidCreate для генерации глобально уникальных 128-битных чисел.К сожалению, эти функции не поддерживаются в Pocket PC, поэтому метод Guid.NewGuid не был реализован для .NET Compact Framework.

В этой статье предлагается алгоритм, равный версии Windows

Оказывается, легко написать собственную реализацию метода Guid.NewGuid.Ниже показано тестовое приложение, которое генерирует GUID на Pocket PC.Он использует пользовательский класс PocketGuid, который использует тот же алгоритм, что и десктопные GUID, и более подробно обсуждается далее в этой статье.

Начиная с версии 2.0 фактическая компактная структура содержит метод Guid.NewGuid.Я думаю, что они включают в себя упомянутый код, что приводит к той же прочности / уникальности Guids на WinCE.

...