https://mobile.codeguru.com/csharp/.net/net_security/making-a-guid-creator-in-.net.html

Zufällig bin ich hier rüber gestolpert. Weitergelesen habe ich eigentlich nur, weil mir in der Einleitung mitgeteilt wurde, dass man Dinge auch vergessen kann mit dem Alter, wie ich eine neue GUID erzeuge weiss ich schon noch;) Ich hatte halt die Hoffnung in die Interna der Erzeugung eingeweiht zu werden. 

Dies war leider Fehlanzeige, also werde ich dies demnächst Mal aus dem source extrahieren. Wichtig ist hierbei, dass diese Art der ID ihrem Namen alle Ehre macht.

So ähnlich wie wenn beim Herrn Schwartz dran steht: Wir backen mehrmals täglich frisch für sie.

Ursprünglich war diese einmal von MS als wirklich global einzigartig postuliert beschrieben, MS hat das später mit v4 etwas eingeschränkt in Bezug zu ihrer Zufälligkeit. 

https://www.sohamkamani.com/blog/2016/10/05/uuid1-vs-uuid4/

So momentan genieße ich die 'kalte' Sonne und kann nicht in den nightly source schauen :)

und nun mho wird dieser code nur auf winOS tun: https://referencesource.microsoft.com/#mscorlib/system/guid.cs,b7fae6994c22c22e, weil die GUID oder UUID ja schon immer in der WinRegistry benutzt wurde, dorten im OS also eine Methode (CoCreateGuid) zum erzeugen derselben vorhanden ist.

Und ja so ist es: https://github.com/dotnet/coreclr/blob/32f0f9721afb584b4a14d69135bea7ddc129f755/src/pal/src/misc/miscpalapi.cpp#L355 im core code wird hier entweder die bsd version 1 benutzt oder unter MacOs && Linux die version 4 zum Erzeugen von UUID's.

Und dieser kleine Unterschied ist es auch, der alle, welche noch nicht das .net fw v5 aka .net Core im Blickfeld haben, dies Mal etwas mehr in den Fokus zu nehmen.

einmal aus dem bsd v1 fundus: https://www.freebsd.org/cgi/man.cgi?query=uuid_create
und dem v4: https://linux.die.net/man/3/uuid_generate_random

Comments


Comments are closed