Architect.Identities
2.1.0
dotnet add package Architect.Identities --version 2.1.0
NuGet\Install-Package Architect.Identities -Version 2.1.0
<PackageReference Include="Architect.Identities" Version="2.1.0" />
paket add Architect.Identities --version 2.1.0
#r "nuget: Architect.Identities, 2.1.0"
// Install Architect.Identities as a Cake Addin #addin nuget:?package=Architect.Identities&version=2.1.0 // Install Architect.Identities as a Cake Tool #tool nuget:?package=Architect.Identities&version=2.1.0
Reliable unique ID generation and management for distributed applications.
Auto-increment IDs reveal sensitive information. UUIDs (also known as GUIDs) are inefficient as primary keys in a database. Having two different IDs is cumbersome and counterintuitive. We can do better.
- For a 93-bit UUID replacement that is efficient as a primary key, use the DistributedId.
- For a 128-bit 128-bit UUID replacement with the advantages of the DistributedId and practically no rate limits or collisions, at the cost of more space, use the DistributedId128.
- To expose IDs externally in a sensitive environment where zero metadata must be leaked, transform them with PublicIdentities.
https://github.com/TheArchitectDev/Architect.Identities
Release notes:
2.1.0:
- Semi-breaking: IPublicIdentityConverter now features additional methods, although the type is generally not user-implemented.
- Semi-breaking: HexadecimalIdEncoder's char-based parameters have been renamed from "bytes" to "chars".
- Added DistributedId128, a 128-bit (Guid/UInt128) DistributedId variant with practically no rate limits or collisions that also doubles as a version-7 UUID.
- Added encoding methods for UInt128.
- Added extension methods to transcode between UInt128 and Guid.
- Added public identity conversions for UInt128 and Guid.
- DistributedIdGeneratorScope and DistributedId128GeneratorScope now expose the CurrentGenerator property, which helps when implementing generators that need to piggyback on the encapsulated generator.
2.0.0:
- BREAKING: Removed Fluid. Ambient scopes with startup configuration are now considered undesirable.
- BREAKING: Removed ApplicationInstanceId. Ambient scopes with startup configuration are now considered undesirable.
- BREAKING: Removed ambient access to IPublicIdentityConverter. Ambient scopes with startup configuration are now considered undesirable.
- BREAKING: IdEncoder has been reworked into BinaryIdEncoder, AphanumericIdEncoder, and HexadecimalIdEncoder.
- BREAKING: ID decoding methods now throw if the input is too long. This is specially relevant for strings (such as query parameters) where 0123456789123456 and 0123456789123456aaaa should not produce the same ID.
- BREAKING: IPublicIdentityConverter now throws on big-endian architectures, instead of risking silent portability issues between architectures.
- BREAKING: Now using AmbientContexts 2.0.0.
- Semi-breaking: DistributedIds are now always 28 digits, to avoid a change from 27 to 28 digits in the future. Newly generated IDs will be significantly greater than before. Avoid downgrading after upgrading.
- DistributedIds can now burst-generate ~128,000 IDs at once before the ~128 IDs per millisecond throttling kicks in. This makes throttling much less likely to be encountered.
- DistributedId now stays incremental even under clock adjustments of up to 1 second. (Note that the UTC clock remains unaffected by DST.)
- Hexadecimal ID encodings are now supported.
- IPublicIdentityConverter now comes with a TestPublicIdentityConverter implementation for unit tests.
- Added UnsupportedOSPlatform("browser") to PublicIdentities, due to continuing lack of AES support.
1.0.2:
- Now using AmbientContexts 1.1.1, which fixes extremely rare bugs and improves performance.
1.0.1:
- Now using AmbientContexts 1.1.0, for a performance improvement.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 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. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Architect.AmbientContexts (>= 2.0.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 3.1.0)
-
net5.0
- Architect.AmbientContexts (>= 2.0.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 3.1.0)
-
net6.0
- Architect.AmbientContexts (>= 2.0.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 3.1.0)
-
net7.0
- Architect.AmbientContexts (>= 2.0.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 3.1.0)
-
net8.0
- Architect.AmbientContexts (>= 2.0.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 3.1.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Architect.Identities:
Package | Downloads |
---|---|
Architect.Identities.Azure
Release notes: 1.0.2: - Now using AmbientContexts 1.1.1, which fixes extremely rare bugs and improves performance. 1.0.1: - Now using AmbientContexts 1.1.0, for a performance improvement. Description: Azure-based implementations for the Architect.Identities package. This package allows Azure blob storage to be used as the synchronization mechanism for assigning unique IDs to each application instance. services.AddIdGenerator(generator => generator.UseAzureBlobStorageContainer(new BlobContainerClient("ConnectionString", "ContainerName"))); |
GitHub repositories
This package is not used by any popular GitHub repositories.