Sparkdo.IdGeneration 1.0.1

There is a newer prerelease version of this package available.
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" />
                    
Directory.Packages.props
<PackageReference Include="Sparkdo.IdGeneration" />
                    
Project file
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
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=Sparkdo.IdGeneration&version=1.0.1
                    
Install as a Cake Tool

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-传统算法),默认1
  • BaseTime: 基础时间,不能超过当前系统时间
  • WorkerId: 机器码,必须由外部设定
  • WorkerIdBitLength: 机器码位长,默认值6
  • SeqBitLength: 序列数位长,默认值6
  • MaxSeqNumber: 最大序列数,默认值0(表示取最大值)
  • MinSeqNumber: 最小序列数,默认值5
  • TopOverCostCount: 最大漂移次数,默认2000
  • DataCenterId: 数据中心ID,默认0
  • DataCenterIdBitLength: 数据中心ID长度,默认0
  • TimestampType: 时间戳类型(0-毫秒,1-秒),默认0

顺序 GUID 配置 (SequentialGuidGeneratorOptions)

  • DefaultSequentialGuidType: 默认顺序 GUID 类型

AOT 支持

本库支持原生 AOT 编译,通过 ILLink.Substitutions.xml 配置确保正确修剪。

Product 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.

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