NetEvolve.Http.Correlation.Ulid
3.0.0
Prefix Reserved
dotnet add package NetEvolve.Http.Correlation.Ulid --version 3.0.0
NuGet\Install-Package NetEvolve.Http.Correlation.Ulid -Version 3.0.0
<PackageReference Include="NetEvolve.Http.Correlation.Ulid" Version="3.0.0" />
<PackageVersion Include="NetEvolve.Http.Correlation.Ulid" Version="3.0.0" />
<PackageReference Include="NetEvolve.Http.Correlation.Ulid" />
paket add NetEvolve.Http.Correlation.Ulid --version 3.0.0
#r "nuget: NetEvolve.Http.Correlation.Ulid, 3.0.0"
#:package NetEvolve.Http.Correlation.Ulid@3.0.0
#addin nuget:?package=NetEvolve.Http.Correlation.Ulid&version=3.0.0
#tool nuget:?package=NetEvolve.Http.Correlation.Ulid&version=3.0.0
NetEvolve.Http.Correlation.Ulid
ULID-based implementation of IHttpCorrelationIdProvider for sortable, time-based correlation IDs.
Overview
This package provides a ULID (Universally Unique Lexicographically Sortable Identifier) implementation for generating correlation IDs. ULIDs combine the benefits of UUIDs with the lexicographic sortability of timestamps, making them ideal for distributed systems.
Key Features
- Time-Based Sorting: ULIDs are lexicographically sortable by creation time
- High Entropy: 128-bit identifiers with 80 bits of randomness
- URL-Safe: Base32-encoded string representation
- Efficient: Faster generation and comparison than GUIDs
- Multi-Framework Support: Compatible with .NET 8.0, 9.0, and 10.0
Installation
dotnet add package NetEvolve.Http.Correlation.Ulid
Usage
Basic Setup
Configure services to use ULID-based correlation IDs in your Program.cs:
using NetEvolve.Http.Correlation;
var builder = WebApplication.CreateBuilder(args);
// Register correlation services with ULID provider
builder.Services
.AddHttpCorrelation()
.WithUlidGenerator(); // Use ULID provider, instead of default behavior.
var app = builder.Build();
app.UseHttpCorrelation();
app.Run();
With HTTP Client
Combine with HTTP client correlation forwarding:
builder.Services
.AddHttpCorrelation()
.WithUlidGenerator(); // Use ULID provider, instead of default behavior.
builder.Services
.AddHttpClient("MyApiClient")
.WithHttpCorrelation();
ULID Format
ULIDs are 26-character case-insensitive strings:
01ARZ3NDEKTSV4RRFFQ69G5FAV
Structure:
- 10 characters: Timestamp (milliseconds since Unix epoch)
- 16 characters: Random component
Benefits
- Temporal Ordering: Natural sorting by creation time
- Shorter Representation: 26 characters vs 36 for standard GUIDs
- Better Database Performance: More efficient indexing
- No Coordination Required: Distributed generation without collisions
Related Packages
Required Package
- NetEvolve.Http.Correlation.Abstractions - Core abstractions and interfaces
Companion Packages
- NetEvolve.Http.Correlation.AspNetCore - ASP.NET Core middleware and services
- NetEvolve.Http.Correlation.HttpClient - HTTP client correlation forwarding
- NetEvolve.Http.Correlation.TestGenerator - Test-friendly provider
Dependencies
NetEvolve.Http.Correlation.AbstractionsUlid(NuGet package)
License
Licensed under the MIT License. See LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- NetEvolve.Http.Correlation.Abstractions (>= 3.0.0)
- Ulid (>= 1.4.1)
-
net8.0
- NetEvolve.Http.Correlation.Abstractions (>= 3.0.0)
- Ulid (>= 1.4.1)
-
net9.0
- NetEvolve.Http.Correlation.Abstractions (>= 3.0.0)
- Ulid (>= 1.4.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.