Global Unique Identifier (GUID)
Eintrag zuletzt aktualisiert am: 16.01.2017
Ein Globally Unique
Identifier (
GUID) ist eine global eindeutige Zahl mit 128 Bit (16 Bytes), also einen Bereich von rund 3,4028236e+38 Werten (2 hoch 128). Sie werden mit einem Algorithmus aus dem
Netzwerknamen des Computers und der genauen Uhrzeit gebildet. Sofern der Computer über keinen
Netzwerknamen verfügt, wird eine Zufallszahl gebildet, die höchstwahrscheinlich eindeutig ist. Die Eindeutigkeit ist wahrscheinlich auf Grund der Größe der
GUIDs.
GUIDs sind eine Implementierung des Standards Universally Unique
Identifier (
UUID) im
Distributed Computing Environment (
DCE) der Open Group (Open Software Foundation (OSF)).
UUIDs sind auch in RFC 4122 (
https://tools.ietf.org/html/rfc4122) spezifiziert ("This specification is derived from the
DCE specification with the kind permission of the OSF").
GUIDs in COM
Die Spezifikation von COM verlangt, dass zentrale Bausteine der
Komponentenarchitektur eindeutig identifizierbar sind. Diese Kennung soll nicht nur innerhalb eines Systems, sondern über Raum und Zeit eindeutig sein. Derartige Kennungen werden mit Global Unique
Identifier (kurz:
GUIDs) vorgenommen. Im Kontext mit einem bestimmten Baustein haben die
GUIDs besondere Namen, z.B. TypeID
GUID in .NET
Auch wenn im
.NET Framework GUIDs (Global Unique
Identifier) nicht mehr zu Identifikation von Schnittstellen und Klassen zum Einsatz kommen, haben diese 128-Bit langen Zahlen auch dort viele Einsatzgebiete, z.B. zur eindeutigen Identifikation von verteilt erzeugten Datensätzen oder eindeutige Identifikationen für Benutzersitzung.
Länge einer GUID als Zeichenkette
Es gibt verschiedene Formatierungen für eine
GUID, sodass diese zwischen 32 und 68 Zeichen verbraucht:
var g = Guid.NewGuid();
Console.WriteLine(g.ToString()); // => 36 Zeichen mit Bindestrichen: 12345678-1234-1234-1234-123456789abc
Console.WriteLine(g.ToString("D")); // wie to String()
Console.WriteLine(g.ToString("N")); // => 32 Zeichen, ohne Bindestriche: 12345678123412341234123456789abc
Console.WriteLine(g.ToString("B")); // => 38 Zeichen mit Bindestrichen und geschweiften Klammern: {12345678-1234-1234-1234-123456789abc}
Console.WriteLine(g.ToString("P")); // => 38 Zeichen mit Bindestrichen und runde Klammern(12345678-1234-1234-1234-123456789abc)
Console.WriteLine(g.ToString("X")); // => 68 Zeichen (Hexadecimal und geschweifte Klammern): {0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}