Sparkdo.IdGeneration
1.0.1
.NET 10.0
This package targets .NET 10.0. The package is compatible with this framework or higher.
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
There is a newer prerelease version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Sparkdo.IdGeneration --version 1.0.1
NuGet\Install-Package Sparkdo.IdGeneration -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sparkdo.IdGeneration" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Sparkdo.IdGeneration" Version="1.0.1" />
<PackageReference Include="Sparkdo.IdGeneration" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Sparkdo.IdGeneration --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Sparkdo.IdGeneration, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Sparkdo.IdGeneration@1.0.1
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Sparkdo.IdGeneration&version=1.0.1
#tool nuget:?package=Sparkdo.IdGeneration&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Sparkdo.IdGeneration
Sparkdo 框架的 ID 生成库,提供多种 ID 生成策略。
功能特性
- 雪花算法 (Snowflake): 基于 Twitter 的雪花算法实现,生成全局唯一的 Long 类型 ID
- 顺序 GUID: 生成顺序 GUID,提高数据库索引性能
- 字符串 ID: 生成基于 Base32 编码的字符串 ID,避免容易混淆的字符
- 可配置: 支持通过配置文件自定义各种参数
安装
dotnet add package Sparkdo.IdGeneration
核心组件
1. 雪花算法 ID 生成器
基于 Twitter 的雪花算法实现,支持以下特性:
- 支持多数据中心部署
- 支持毫秒级和秒级时间戳
- 支持漂移算法和传统算法
- 可配置机器码位长、序列数位长等参数
2. 顺序 GUID 生成器
生成顺序 GUID,可以提高数据库索引性能:
- 支持三种顺序类型:SequentialAsString、SequentialAsBinary、SequentialAtEnd
- 可配置默认顺序类型
3. 字符串 ID 生成器
生成基于 Base32 编码的字符串 ID:
- 使用 Crockford Base32 编码,避免容易混淆的字符 (0, O, I, L)
- 生成固定长度的 26 位字符串 ID
配置文件示例:
{
"Sparkdo": {
"IdGeneration": {
"SnowflakeId": {
"WorkerId": 1,
"WorkerIdBitLength": 6,
"SeqBitLength": 6
}
}
}
}
使用 ID 生成器:
public class MyService
{
private readonly ILongIdGenerator _longIdGenerator;
private readonly IGuidGenerator _guidGenerator;
private readonly IStringIdGenerator _stringIdGenerator;
public MyService(
ILongIdGenerator longIdGenerator,
IGuidGenerator guidGenerator,
IStringIdGenerator stringIdGenerator)
{
_longIdGenerator = longIdGenerator;
_guidGenerator = guidGenerator;
_stringIdGenerator = stringIdGenerator;
}
public void GenerateIds()
{
// 生成雪花 ID
long snowflakeId = _longIdGenerator.Create();
// 生成顺序 GUID
Guid sequentialGuid = _guidGenerator.Create();
// 生成字符串 ID
string stringId = _stringIdGenerator.Create();
}
}
配置选项
雪花算法配置 (SparkdoSnowflakeIdOptions)
Method: 雪花计算方法(1-漂移算法|2-传统算法),默认1BaseTime: 基础时间,不能超过当前系统时间WorkerId: 机器码,必须由外部设定WorkerIdBitLength: 机器码位长,默认值6SeqBitLength: 序列数位长,默认值6MaxSeqNumber: 最大序列数,默认值0(表示取最大值)MinSeqNumber: 最小序列数,默认值5TopOverCostCount: 最大漂移次数,默认2000DataCenterId: 数据中心ID,默认0DataCenterIdBitLength: 数据中心ID长度,默认0TimestampType: 时间戳类型(0-毫秒,1-秒),默认0
顺序 GUID 配置 (SequentialGuidGeneratorOptions)
DefaultSequentialGuidType: 默认顺序 GUID 类型
AOT 支持
本库支持原生 AOT 编译,通过 ILLink.Substitutions.xml 配置确保正确修剪。
| 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. net9.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- JetBrains.Annotations (>= 2025.2.2)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.CommandLine (>= 10.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.0)
- Microsoft.Extensions.Configuration.FileExtensions (>= 10.0.0)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0)
- Microsoft.Extensions.Configuration.UserSecrets (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.DependencyModel (>= 10.0.0)
- Microsoft.Extensions.FileProviders.Physical (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Localization (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Nito.AsyncEx.Context (>= 5.1.2)
- Sparkdo.Core (>= 1.0.1)
- System.Linq.Dynamic.Core (>= 1.7.0)
- System.Runtime.Loader (>= 4.3.0)
- System.Text.Json (>= 10.0.0)
-
net10.0
- JetBrains.Annotations (>= 2025.2.2)
- Microsoft.Extensions.Configuration (>= 10.0.0)
- Microsoft.Extensions.Configuration.CommandLine (>= 10.0.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.0)
- Microsoft.Extensions.Configuration.FileExtensions (>= 10.0.0)
- Microsoft.Extensions.Configuration.Json (>= 10.0.0)
- Microsoft.Extensions.Configuration.UserSecrets (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0)
- Microsoft.Extensions.DependencyModel (>= 10.0.0)
- Microsoft.Extensions.FileProviders.Physical (>= 10.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Localization (>= 10.0.0)
- Microsoft.Extensions.Logging (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.0)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.0)
- Nito.AsyncEx.Context (>= 5.1.2)
- Sparkdo.Core (>= 1.0.1)
- System.Linq.Dynamic.Core (>= 1.7.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Sparkdo.IdGeneration:
| Package | Downloads |
|---|---|
|
Sparkdo.EventBus
Sparkdo 事件总线实现库,提供本地和分布式事件发布/订阅功能 |
|
|
Sparkdo.Ddd.Domain
Sparkdo DDD 领域模型库,提供领域驱动设计的核心组件实现 |
|
|
Sparkdo.BackgroundJobs
Sparkdo 后台作业库,提供后台任务调度和执行功能实现 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.2-preview.1 | 150 | 12/4/2025 |
| 1.0.1 | 1,014 | 11/27/2025 |
| 1.0.0 | 960 | 11/25/2025 |
| 1.0.0-preview.5 | 105 | 10/24/2025 |