Novidades do .NET 9: GUIDs v7

Renato Groffe
3 min readDec 2, 2024

--

Outra novidade bastante interessante trazida pelo .NET 9 é o suporte à geração de GUIDs no padrão conhecido como versão 7. Versões anteriores da plataforma .NET contavam com a geração de GUIDs baseados na especificação UUID Version 4 (RFC 9562), com valores randômicos e que impossibilitavam assim uma forma de ordenação baseada na sequência com que tais GUIDs eram gerados.

Exemplos desses 2 tipos de GUIDs com o .NET 9 foram demonstrados em uma live recente no Canal .NET (clique neste link para acessar a gravação no YouTube):

Podemos observar essa limitação com ordenação de valores no trecho de código a seguir, em que se fez uso do método NewGuid da classe Guid (esta implementação segue no .NET 9 produzindo GUIDs na versão 4):

Um possível resultado pode ser observado na imagem a seguir, em que constatamos que o uso do método Order de LINQ não ordena os GUIDs com base no critério temporal (mas sim adotando uma ordenação baseada em caracteres alfanuméricos):

Com o .NET 9 o novo método chamado CreateVersion7 da classe Guid produzirá GUIDs na versão 7, como indicado na próxima listagem:

Na imagem a seguir observamos que estes GUIDs na versão 7 possuem um conjunto de caracteres iniciais em comum (8 primeiros caracteres), com os demais valores viabilizando uma ordenação temporal (cada GUID é gerado no intervalo de mil milissegundos = 1 segundo):

Podemos também, opcionalmente, utilizar uma sobrecarga de CreateVersion7 que recebe uma instância do tipo DateTimeOffset:

O comportamento desta segunda implementação seguirá o padrão de ordenação, conforme demonstrado no próximo print:

Na listagem a seguir temos o código completo com os exemplos aqui apresentados:

E na próxima imagem estão todos os resultados produzidos durante uma execução da aplicação:

Clique nesta imagem para visualizar com uma melhor resolução

Este projeto de testes foi também disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet9-ConsoleApp-GuidV7

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet