UUIDNext 3.0.0-beta3
See the version list below for details.
dotnet add package UUIDNext --version 3.0.0-beta3
NuGet\Install-Package UUIDNext -Version 3.0.0-beta3
<PackageReference Include="UUIDNext" Version="3.0.0-beta3" />
paket add UUIDNext --version 3.0.0-beta3
#r "nuget: UUIDNext, 3.0.0-beta3"
// Install UUIDNext as a Cake Addin #addin nuget:?package=UUIDNext&version=3.0.0-beta3&prerelease // Install UUIDNext as a Cake Tool #tool nuget:?package=UUIDNext&version=3.0.0-beta3&prerelease
UUIDNext
A fast and modern .NET library to generate UUID/GUID that are either sequential and database friendly (versions 7 & 8), name based (versions 5) or random (version 4).
How to Install
UUIDNext is available on nuget.org
How to Use
using System;
using UUIDNext;
// Creating a database friendly UUID (version 7)
Guid sequentialUuid = Uuid.NewDatabaseFriendly(Database.SQLite);
Console.WriteLine($"This is a database friendly UUID : {sequentialUuid}");
// Creating a name based UUID (Version 5)
Guid urlNamespaceId = Guid.Parse("6ba7b811-9dad-11d1-80b4-00c04fd430c8");
Guid nameBasedUuid = Uuid.NewNameBased(urlNamespaceId, "https://github.com/uuid6/uuid6-ietf-draft");
Console.WriteLine($"This is a name based UUID : {nameBasedUuid}");
What are all these versions ? I didn't know there were so many types of GUID
The traditional GUID (a.k.a UUID Version 4) is fine and works really well for it's intended use. But its random nature is problematic in some scenarios that's why other UUID versions have been created.
UUID Version 3 and 5 are name-based UUIDs. They take a namespace and a name as input and produce a hash-like UUID. Usage of Version 3 is discouraged as it is based on the obsolete MD5 hash function.
UUID Version 7 and 8 are intended to be used as a primary key in a database. The randomness of UUID V4 has a negative impact on performance when used as a key in a database and UUID V1 exposed the MAC address of the machine where it was created. UUID V7 & 8 aims to take the best of both worlds without their drawbacks. They are currently at the draft stage so their structure and implementation may change.
Why creating a new Library ? is there a problem with Guid.NewGuid() ?
As I said, UUIDs V4 produced by Guid.NewGuid() are fine when they are not used in the scenarios described above and there's no reason to stop using them. But if you find yourself in a position where UUID V4 is suboptimal, this library is for you.
Resources
RFC 4122 : The original standard for UUID Version 1 to 5.
Draft new UUID RFC : The proposed updated standard that include UUID Version 6 to 8
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
.NET Framework | net472 is compatible. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- System.Memory (>= 4.5.5)
-
.NETFramework 4.8
- System.Memory (>= 4.5.5)
-
.NETStandard 2.1
- No dependencies.
NuGet packages (9)
Showing the top 5 NuGet packages that depend on UUIDNext:
Package | Downloads |
---|---|
Beckett
Messaging and event sourcing library |
|
FastIDs.TypeId
High-performance dotnet implementation of type-safe, K-sortable, globally unique identifier inspired by Stripe IDs |
|
TcKs.TypeId
The .NET implementation of TypeID. |
|
Yaver.Db.Core
Package Description |
|
JamesBrighton.Data.GrpcClient
GrpcDataProvider is a .NET Data Provider for gRPC. This package contains JamesBrighton.Data.GrpcClient. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on UUIDNext:
Repository | Stars |
---|---|
mareek/UUIDNext
A fast and modern .NET library to generate UUID/GUID that are either sequential and database friendly (versions 7), name based (versions 5) or random (version 4).
|
Version | Downloads | Last updated |
---|---|---|
4.0.0-beta3 | 138 | 11/17/2024 |
4.0.0-beta2 | 229 | 10/24/2024 |
4.0.0-beta | 3,076 | 10/6/2024 |
3.0.0 | 328,439 | 7/2/2024 |
3.0.0-beta3 | 5,661 | 5/16/2024 |
3.0.0-beta2 | 22,032 | 1/24/2024 |
3.0.0-beta | 1,756 | 11/21/2023 |
2.0.2 | 628,410 | 6/8/2023 |
2.0.0 | 105,175 | 1/9/2023 |
1.1.1 | 48,124 | 4/25/2022 |
1.1.0 | 633 | 4/3/2022 |
1.0.2 | 3,735 | 12/22/2021 |
1.0.1 | 1,540 | 8/27/2021 |
1.0.0 | 648 | 8/23/2021 |