Sparkdo.IdGeneration
1.0.2
dotnet add package Sparkdo.IdGeneration --version 1.0.2
NuGet\Install-Package Sparkdo.IdGeneration -Version 1.0.2
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.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Sparkdo.IdGeneration" Version="1.0.2" />
<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.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Sparkdo.IdGeneration, 1.0.2"
#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.2
#: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.2
#tool nuget:?package=Sparkdo.IdGeneration&version=1.0.2
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 类型
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- JetBrains.Annotations (>= 2025.2.4)
- Microsoft.Extensions.Configuration (>= 10.0.5)
- Microsoft.Extensions.Configuration.CommandLine (>= 10.0.5)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.5)
- Microsoft.Extensions.Configuration.FileExtensions (>= 10.0.5)
- Microsoft.Extensions.Configuration.Json (>= 10.0.5)
- Microsoft.Extensions.Configuration.UserSecrets (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Microsoft.Extensions.DependencyModel (>= 10.0.5)
- Microsoft.Extensions.FileProviders.Physical (>= 10.0.5)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.5)
- Microsoft.Extensions.Localization (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
- Microsoft.Extensions.Options (>= 10.0.5)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.5)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.5)
- Nito.AsyncEx.Context (>= 5.1.2)
- Sparkdo.Core (>= 1.0.2)
- System.Linq.Dynamic.Core (>= 1.7.1)
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 | 244 | 4/27/2026 |
| 1.0.2-preview.5 | 90 | 4/15/2026 |
| 1.0.2-preview.4 | 96 | 2/8/2026 |
| 1.0.2-preview.3 | 98 | 2/1/2026 |
| 1.0.2-preview.2 | 116 | 1/31/2026 |
| 1.0.2-preview.1 | 193 | 12/4/2025 |
| 1.0.1 | 1,059 | 11/27/2025 |
| 1.0.0 | 1,002 | 11/25/2025 |
| 1.0.0-preview.5 | 143 | 10/24/2025 |