¿Es posible que un servidor ASP.NET genere el mismo GUID para más de un usuario?
Pregunta
He visto las Colisiones GUID discusiones, pero solo quería saber si podría haber una colisión de GUID si ambos clientes accedieran a la misma página web que genera el GUID exactamente al mismo tiempo (¿probablemente hasta el microsegundo)?
Solución
Es teóricamente posible, pero altamente improbable.
Otros consejos
No. Si eso sucede, ¡apúrate y compra un boleto de lotería!
En un solo servidor, no, no es posible. Versión 4 Las guías están compuestas (entre otras cosas) de un valor pseudoaleatorio de 54 bits, y según tengo entendido, recorren todos los valores antes de repetir.
Si se crea en más de un servidor, entonces es posible tener un choque guido, aunque eso es altamente improbable.
Consulte RFC 4122 , específicamente la sección 4.1.5. Windows moderno usa UUID v4, creo.
De Wikipedia, la enciclopedia libre
Un identificador o GUID globalmente único (pronunciado / & # 712; gu & # 720; & # 618; d / o / & # 712; gw & # 618; d /) es un tipo especial de identificador utilizado en aplicaciones de software en ordene para proporcionar un número de referencia que sea único en cualquier contexto (por lo tanto, " Globalmente "), por ejemplo, al definir la referencia interna para un tipo de punto de acceso en una aplicación de software, o para crear claves únicas en una base de datos. Si bien no se garantiza que cada GUID generado sea único, el número total de claves únicas (2128 o 3.4 & # 215; 1038) es tan grande que la probabilidad de que se genere el mismo número dos veces es muy pequeña . Por ejemplo, considere el universo observable, que contiene alrededor de 5 & # 215; 1022 estrellas; cada estrella podría tener 6.8 & # 215; 1015 GUID universalmente únicos.
Si genera muchos GUID, la probabilidad de colisión es bastante alta debido a Paradoja de cumpleaños . Teóricamente, la colisión con GUID debería ser altamente improbable (sin intuición), pero prácticamente ocurre de vez en cuando.
Claro, es una pérdida de tiempo manejar estas colisiones programáticamente, pero aún así debe escribir su código de una manera que si sucede, entonces su código debe fallar en voz alta, no en silencio y sin ser detectado.