Sie sind hier

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}}