Veo estos 2 acrónimos lanzados, y me pregunto si hay alguna diferencia entre un GUID y un UUID.¿Hay alguna diferencia entre un GUID y un UUID?
Respuesta
GUID es la implementación de Microsoft del estándar UUID.
por Wikipedia:
El término GUID general se refiere a la aplicación de la norma Universally Unique Identifier (UUID) de Microsoft.
Una cotización actualizada de ese mismo artículo de Wikipedia:
RFC 4122 sí establece que los UUID "también se conocen como GUID". Todo esto sugiere que "GUID", aunque originalmente se refería a una variante del UUID utilizado por Microsoft, se ha convertido simplemente en un nombre alternativo para UUID ...
(The G significa Globally) –
Al igual que Microsoft para tomar algo que funciona en todas partes (el universo) y hacer que funcione en un subconjunto muy pequeño (el globo) :) – Gus
Tenga en cuenta que si desea convertir de la representación binaria GUID de Microsoft Para un UUID estándar, deberá voltear la endianidad de los primeros tres (de cuatro) campos de datos como se detalla en la sección "Codificación binaria" aquí: http://en.wikipedia.org/wiki/Globally_unique_identifier – Form
Realmente no. GUID está más centrado en Microsoft, mientras que UUID se usa más ampliamente (por ejemplo, como en el esquema URN urn: uuid:, y en CORBA).
La respuesta simple es: sin diferencia, son lo mismo. Trátelos como un valor de 16 bytes (128 bits) que se utiliza como un valor único. En Microsoft-talk, se llaman GUID, pero los llaman UUID cuando no usan Microsoft-speak.
Incluso los autores de la especificación UUID y reclamo Microsoft son sinónimos:
Desde la introducción de IETF RFC 4122 "un identificador único universal (UUID) urna de nombre": "un Uniform Resource Name espacio de nombres para UUID (universalmente IDentifier único), también conocido como GUID (Globally Unique IDentifier). "
del ITU-T Recommendation X.667, ISO/IEC 9834-8:2004 International Standard: "Los UUID también se conocen como Identificadores únicos globales (GUID), pero este término no se utiliza en esta Recomendación".
Y Microsoft incluso claims se especifica un GUID por el RFC UUID: "En la programación de Microsoft Windows y en los sistemas Windows, un identificador único global (GUID), como se especifica en [RFC4122] operativo, es ... El término el identificador único universal (UUID) a veces se usa en las especificaciones del protocolo de Windows como sinónimo de GUID ".
Pero la respuesta correcta depende de lo que significa la pregunta cuando dice "UUID" ...
La primera parte depende de lo que el autor de la pregunta está pensando cuando ellos están diciendo "UUID".
La afirmación de Microsoft implica que todos los UUID son GUID. Pero, ¿todos los GUID son UUID reales? Es decir, ¿el conjunto de todos los UUID es solo un subconjunto propio del conjunto de todos los GUID, o es exactamente el mismo conjunto?
Al observar los detalles del RFC 4122, hay cuatro "variantes" diferentes de UUID.Esto se debe principalmente a que tales identificadores de 16 bytes estaban en uso antes de que esas especificaciones se combinaran en la creación de una especificación UUID. De la sección 4.1.1 de RFC 4122, los cuatro variantes de UUID son:
- Reservado, Sistema de Computación de red compatibles hacia atrás
- La variante se especifica en RFC 4122 (de los cuales hay cinco sub-variantes , que se llaman "versiones")
- Reservado, compatibilidad hacia atrás de Microsoft Corporation
- Reservado para una definición futura.
De acuerdo con RFC 4122, todas las variantes UUID son "reales" UUID, a continuación, todos los GUID son UUID reales. A la pregunta literal "¿hay alguna diferencia entre GUID y UUID?" La respuesta es definitivamente no para RFC 4122 UUID: sin diferencia (pero sujeto a la segunda parte a continuación).
Pero no todos los GUID son variante 2 UUID (por ejemplo, Microsoft COM tiene GUID que son variante 3 UUID). Si la pregunta era "¿hay alguna diferencia entre el GUID y la variante 2 UUID", entonces la respuesta sería sí, pueden ser diferentes. Alguien que hace la pregunta probablemente no sabe acerca de las variantes y podría estar pensando en variante 2 UUID cuando dicen la palabra "UUID" (p. Ej., Conocen vagamente la dirección MAC + tiempo y los algoritmos de números aleatorios formularios de UUID, que son versiones de variante 2). En cuyo caso, la respuesta es sí diferente.
De modo que la respuesta, en parte, depende de lo que la persona que pregunta piensa cuando dice la palabra "UUID". ¿Significan variante 2 UUID (porque esa es la única variante que conocen) o todos los UUID?
La segunda parte depende de qué especificación se utilice como definición de UUID.
Si cree que fue confuso, lea ITU-T X.667 ISO/IEC 9834-8:2004 que se supone que debe alinearse y es técnicamente compatible con RFC 4122. Tiene una oración adicional en la cláusula 11.2 que dice: "Todos los UUID que se ajusten a esta Recomendación | Estándar internacional tendrán bits de variantes con el bit 7 del octeto 7 en 1 y el bit 6 del octeto 7 en 0". Lo que significa que solo variante 2 UUID se ajustan a ese estándar (esos dos valores de bit significan variante 2). Si eso es cierto, entonces no todos los GUID conforman los UUID de ITU-T/ISO/IEC, porque los UUID de ITU-T/ISO/IEC conformes solo pueden ser variante 2 valores.
Por lo tanto, la respuesta real también depende de qué especificación del UUID se esté preguntando. Suponiendo que estamos hablando claramente de todos los UUID y no sólo la variante 2 UUID: no existe ninguna diferencia entre GUID y UUID del IETF, pero diferencia entre sí GUID y UUID conforme UIT-T/ISO/IEC de!
codificaciones binarias podrían diferir
Cuando codificado en binario (en contraposición con el formato de texto legible), el GUID may be stored en una estructura con cuatro campos diferentes como sigue. Este formato difiere del UUID standard solo en el orden de bytes de los primeros 3 campos.
Bits Bytes Name Endianness Endianness
(GUID) RFC 4122
32 4 Data1 Native Big
16 2 Data2 Native Big
16 2 Data3 Native Big
64 8 Data4 Big Big
Más informativo que la respuesta elegida. Creo que la respuesta elegida es la respuesta más simple a la pregunta, sin embargo. –
La tabla de codificación binaria incrustada en la respuesta es muy útil. Tnx – Luciano
El 'endianness' es muy importante. Si almacena la identificación como bytes obtendrá diferentes resultados de GUID y UUID. – Calabacin
GUID tiene un uso de larga data en las zonas en las que no es necesariamente un valor de 128 bits en la misma forma que un UUID. Por ejemplo, el RSS specification defines GUIDs puede ser cualquier cadena de su elección, siempre que sea única, con un atributo "isPermalink" para especificar que el valor que está utilizando es solo un enlace permanente al elemento que se distribuye.
escribí un método para convertir la matriz de bytes GUID en UUID en Java, creo que sirve:
public static UUID fromGuidByteArrayToUUID(byte[] blob) {
if(blob != null && blob.length == 16) {
ByteBuffer b1_4bytes = ByteBuffer.wrap(subByteArray(blob, 0, 4));
b1_4bytes.order(ByteOrder.LITTLE_ENDIAN);
ByteBuffer b2_2bytes = ByteBuffer.wrap(subByteArray(blob, 4, 2));
b2_2bytes.order(ByteOrder.LITTLE_ENDIAN);
ByteBuffer b3_2bytes = ByteBuffer.wrap(subByteArray(blob, 6, 2));
b3_2bytes.order(ByteOrder.LITTLE_ENDIAN);
ByteBuffer b4_8bytes = ByteBuffer.wrap(subByteArray(blob, 8, 8));
b4_8bytes.order(ByteOrder.BIG_ENDIAN);
ByteBuffer bb = ByteBuffer.allocate(16);
bb.putInt(b1_4bytes.getInt());
bb.putShort(b2_2bytes.getShort());
bb.putShort(b3_2bytes.getShort());
bb.putLong(b4_8bytes.getLong());
bb.position(0);
long firstLong = bb.getLong();
long secondLong = bb.getLong();
UUID uuid = new UUID(firstLong, secondLong);
return uuid;
}else {
return null;
}
}
Mi aplicación para convertir de orden de bytes UUID de Java para de GUID
/**
* Fix for endian differences between UUID and GUIDS
*
* @param uuid
* @return
*/
protected static byte[] UuidToGuidByteArray(UUID uuid)
{
ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
bb.putLong(uuid.getMostSignificantBits());
bb.putLong(uuid.getLeastSignificantBits());
byte[] out = bb.array();
byte swap;
//swap first 4
swap = out[0];
out[0] = out[3];
out[3] = swap;
swap = out[1];
out[1] = out[2];
out[2] = swap;
//swap next 2
swap = out[4];
out[4] = out[5];
out[5] = swap;
//swap next 2
swap = out[6];
out[6] = out[7];
out[7] = swap;
return out;
}
Microsoft de guid
puede estar en la forma de un uuid estando rodeado por dos llaves. {}
...
- 1. ¿Hay alguna diferencia entre un control y un widget?
- 2. ¿Hay alguna diferencia entre un CGRect y un NSRect?
- 3. ¿Cuál es la diferencia entre un "nonce" y un "GUID"?
- 4. ¿Hay alguna diferencia entre una entidad y un objeto?
- 5. ¿Hay alguna diferencia entre System.Windows.Clipboard y System.Windows.Forms.Clipboard?
- 6. ¿Hay alguna diferencia entre UITableViewCellAccessoryDetailDisclosureButton y UITableViewCellAccessoryDisclosureIndicator
- 7. ¿Hay alguna diferencia entre MsgBox y MessageBox.Show?
- 8. ¿Hay alguna diferencia entre SSLv3 y TLS1.0?
- 9. ¿Hay alguna diferencia entre CPython y Python
- 10. ¿Hay alguna diferencia entre `ListView.invalidateViews()` y 'Adapter.notifyDataSetChanged()'?
- 11. ¿Hay alguna diferencia entre DataTable.Clear y DataTable.Rows.Clear?
- 12. ¿Hay alguna diferencia entre log4net.Config.BasicConfigurator.Configure() y log4net.Config.XmlConfigurator.Configure()?
- 13. ¿Hay alguna diferencia entre! == y! = En PHP?
- 14. ¿Hay alguna diferencia entre: window.localStorage y localStorage?
- 15. ¿Hay alguna diferencia entre .NET y ASP.NET
- 16. ¿Hay alguna diferencia entre is_int() y ctype_digit()?
- 17. ¿Hay alguna diferencia entre gluLookAt() y glFrustum()?
- 18. ¿Hay alguna diferencia entre readonly y {get; }
- 19. ¿Hay alguna diferencia entre (local), '.' y localhost?
- 20. Cómo crear un GUID/UUID usando el SDK de iPhone
- 21. ¿Hay alguna forma de generar un guid en ANT?
- 22. ¿Hay alguna diferencia entre un servidor web y un servicio web?
- 23. ¿Hay alguna diferencia entre SqlConnection.CreateCommand y el nuevo SqlCommand?
- 24. ¿Hay alguna diferencia entre delegate/selector y target/action?
- 25. ¿Hay alguna diferencia entre UTF8Encoding.UTF8.GetBytes y Encoding.UTF8.GetBytes?
- 26. ¿Hay alguna diferencia entre 'imprimir' y 'eco' en PHP?
- 27. ¿Hay alguna diferencia entre BOOL y Boolean en Objective-C?
- 28. ¿Hay alguna diferencia entre "! =" Y "<>" en Oracle Sql?
- 29. ¿Hay alguna diferencia entre utilizar este puntero y no usarlo?
- 30. ¿hay alguna diferencia entre/mnt/sdcard y/sdcard?
Puedo decir "GUID", no puedo decir "UUID". – Hardwareguy
pronuncio UUID como "you-wid" –
digo "you-you-I-dee", pero no soy un hablante nativo ... – Wilt