Novidades do .NET 9: GUIDs v7
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:
Este projeto de testes foi também disponibilizado no GitHub: