TKWF.Ext.RateLimiting 0.2.0

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package TKWF.Ext.RateLimiting --version 0.2.0
                    
NuGet\Install-Package TKWF.Ext.RateLimiting -Version 0.2.0
                    
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="TKWF.Ext.RateLimiting" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TKWF.Ext.RateLimiting" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="TKWF.Ext.RateLimiting" />
                    
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 TKWF.Ext.RateLimiting --version 0.2.0
                    
#r "nuget: TKWF.Ext.RateLimiting, 0.2.0"
                    
#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 TKWF.Ext.RateLimiting@0.2.0
                    
#: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=TKWF.Ext.RateLimiting&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=TKWF.Ext.RateLimiting&version=0.2.0
                    
Install as a Cake Tool

TKWF.Extensions

TKWF 扩展模块仓库——权限、导航、身份、审计、设置、邮件、存储、账户、数据字典等。

扩展模块与主框架 TKW.Framework 解耦:扩展代码、测试、使用指南独立演进,不进入主框架 TKW.Framework.slnx。


扩展模块一览

各扩展模块使用说明

扩展 版本 说明 Tag README 指南
Permissions V0.9.1 细粒度权限定义 / fail-closed 检查 / 编译期权限名校验(PERM001)/ 多用户批量权限检查(V0.9.0:IPermissionBatchChecker——单权限×多用户,按 ProviderKey 分组归因) $(System.Collections.Specialized.OrderedDictionary[Permissions]) README 指南
Permissions.Abstractions V0.1.0 权限契约抽象(IPermissionChecker/RequirePermission/IRoleProvider) — — —(并入 Permissions)
Permissions.Validation V0.8.0 扩展侧 PERM001 DiagnosticAnalyzer(从内核移除耦合) — — —(并入 Permissions)
Identity V0.4.0 用户 / 角色 / 用户角色分配 + PasswordHasher 凭据验证;GetRolesAsync VEntity 跨表 JOIN(V0.3.0)+ REST 直接暴露(V0.4.0:UserRoleViewQueryService——GET /api/identity/user-roles 仅本人,VEntity DTO 一等公民含 DisplayName/IsSystemRole) $(System.Collections.Specialized.OrderedDictionary[Identity]) README 指南
Account V0.4.0 账户锁定 + 密码重置流程(主框架 V4.9.45 缺口补齐)+ 登录历史与异常检测(V0.3.0,消费 SecurityLog 查询)+ 依赖倒置(V0.4.0,SecurityLog 契约改引 Abstractions) $(System.Collections.Specialized.OrderedDictionary[Account]) README 指南
Authentication V0.2.0 认证中心(令牌体系手写 RS256 JWT + kid 轮换 + 黑名单落库 + Refresh rotation + TokenVersion 闭环 / 认证矩阵 Provider(短信 + 微信)/ 登录保护 / 票据换令牌(PKCE)/ 身份适配层(JwtDomainUserParser/ITokenVerifier/IAuthorizationMapper/UserHelperBase/中间件)/ 跨系统映射 / 平台凭证 / 账号查询写契约 + UserCenter 档案承接)+ Web 装配钩子(v4.10.45:JwtAuthenticationWebExtension<TUserInfo>——RestoreUser 委托直传 + BeforeAuthentication 锚点,旧 AddJwtAuthentication/UseTkfwJwtAuthentication 删除;短路判定修正为 IsAuthenticated 门控 + 黑盒哨兵冒烟锁定顺序) $(System.Collections.Specialized.OrderedDictionary[Authentication]) README 指南
Navigation V0.1.2 菜单数据模型 / 贡献机制 / 权限过滤(从主框架迁出) $(System.Collections.Specialized.OrderedDictionary[Navigation]) README 指南
AuditLogging V0.4.2 审计日志 FreeSql 存储 + SG1 实体 + 查询 API + 统计聚合与清理(V0.3.0)+ 管理 API(V0.4.0:[GenerateController] + ExcludeMethods 排除含 ArgumentsJson 标准 CRUD + 5 REST 端点) + 聚合 SQL 下推(V0.4.2:TopN 经 GroupCountAsync——V4.10.39 分组聚合 API) $(System.Collections.Specialized.OrderedDictionary[AuditLogging]) README 指南
Settings V0.1.2 全局/用户级配置持久化 + 分层读取 $(System.Collections.Specialized.OrderedDictionary[Settings]) README 指南
BlobStoring V0.2.1 二进制大对象本地文件系统存储 + FreeSql 记录 + FileStream 流式下载(V0.2.0) $(System.Collections.Specialized.OrderedDictionary[BlobStoring]) README 指南
Emailing V0.2.1 SMTP/MailKit 邮件发送 + FreeSql 发送记录 + 指数退避重试(V0.2.0);契约抽取至 Emailing.Abstractions(ADR48 D7) $(System.Collections.Specialized.OrderedDictionary[Emailing]) README 指南
Emailing.Abstractions V0.1.0 邮件发送契约抽取(IEmailSender/EmailMessage——ADR48 D7 依赖倒置,Notifications 等消费方复用) — — —(并入 Emailing)
DataDictionary V0.2.0 数据字典集中管理(定义 + 项 + 按编码查询)+ VEntity 读模型联邦(V0.2.0:vw_DictionaryItemView JOIN Definition→Item 单查询下推——GetOrLoadAggregateAsync 两步骤一,"定义存在无项"语义保留,树语义保护经门面) $(System.Collections.Specialized.OrderedDictionary[DataDictionary]) README 指南
Tagging V0.4.3 标签存储扩展(标签算法已回归 TKW.Framework.Utility.Tags,ADR52 瘦身;V0.4.0 AC 自动机 DictMatch 批量匹配 + Options 配置接入);+ 聚合 SQL 下推(V0.4.3:GetFrequencyAsync/GetDimensionDistributionAsync 经 GroupCountAsync/GroupByAsync——V4.10.39;GetTrendAsync 保留内存分桶) $(System.Collections.Specialized.OrderedDictionary[Tagging]) README 指南
PrintTemplates V0.1.2 打印模板引擎与版本化(Scriban 沙箱渲染 + Draft/Active/Archived 生命周期) $(System.Collections.Specialized.OrderedDictionary[PrintTemplates]) README 指南
Metrics V0.2.1 业务指标计算引擎(规格文档驱动复合指标计算——复购率/留存/同期群/漏斗/时段桶/比率;核心计算在 TKW.Framework.Utility.Metrics)+ 指标结果持久化(V0.2.0:IMetricResultStore 契约 + MetricResultMapper 标准化行映射——实体归消费方 SG1 接线) $(System.Collections.Specialized.OrderedDictionary[Metrics]) README 指南
Dashboard V0.1.2 仪表盘数据服务(Metrics 展示层——JSON 描述符 + Widget 数据查询;不引入图表库) $(System.Collections.Specialized.OrderedDictionary[Dashboard]) README 指南
DataPort V0.1.2 数据导入导出(三层架构——核心运行库+MiniExcel Provider+SG1 持久化;FileHash 幂等) $(System.Collections.Specialized.OrderedDictionary[DataPort]) README 指南
Notifications V0.5.0 通知中心(站内通知收件箱+订阅+事件驱动通知+多通道抽象;第一个事件总线消费者);GetListAsync(name) VEntity 跨表 JOIN(V0.1.0);+ 多通道路由 UseChannels/Email(V0.2.0);+ 用户偏好路由 + 逐用户权限门控(V0.3.0,委托 Permissions v0.9.0 IPermissionBatchChecker);+ SignalR 实时推送通道(V0.4.0,独立包 TKWF.Ext.Notifications.SignalR,服务端非 UI);+ REST 直接暴露(V0.5.0:UserNotificationViewQueryService——GET /api/notifications/inbox 仅本人 + name 可空,VEntity DTO 一等公民含 Name/Severity/DisplayName) $(System.Collections.Specialized.OrderedDictionary[Notifications]) README 指南
Notifications.SignalR V0.1.0 通知中心 SignalR 实时推送通道(独立包——Hub 类型锚 + SignalRNotifier best-effort 推送 + 端点映射;FrameworkReference 共享框架零 NuGet;服务端非 UI,前端归消费方)+ Web 装配钩子(v4.10.45:NotificationsHubWebExtension——AddSignalR D6 内聚 + MapHub,旧 MapTkfwNotificationsHub 删除) $(System.Collections.Specialized.OrderedDictionary[Notifications.SignalR]) —(并入 Notifications) —(并入 Notifications 指南)
BackgroundJobs V0.2.1 后台任务持久化增强(执行历史 JobExecution + 业务结果 JobResult 追踪 + 历史清理任务 V0.2.0(RetentionDays 启用)) $(System.Collections.Specialized.OrderedDictionary[BackgroundJobs]) README 指南
BackgroundJobs.Quartz V0.1.0 Quartz AdoJobStore 一键封装(UseTkfwAdoJobStore 12 表自动建表/集群配置) $(System.Collections.Specialized.OrderedDictionary[BackgroundJobs.Quartz]) README —(并入 BackgroundJobs)
HealthCheck V0.2.1 系统健康探测(net10 内置 HealthChecks + /health 端点 + 内置 DB 探针 AddDatabaseHealthCheck<T>(V0.2.0,IEntityReadOnlyDAC 红线合规路径))+ Web 装配钩子(v4.10.45:HealthCheckWebExtension——fluent 探针收集 + MapHealthChecks,旧 AddTkfwHealthChecks/MapTkfwHealthChecks 删除) $(System.Collections.Specialized.OrderedDictionary[HealthCheck]) README 指南
RateLimiting V0.1.2 Web 层限流接线(ASP.NET Core AddRateLimiter + IP/用户分区 + 429/Retry-After;与 Domain [RateLimit] 双层防护)+ Web 装配钩子(v4.10.45:RateLimitingWebExtension——AddRateLimiter 展开 + UseRateLimiter,旧 AddTkfwRateLimiting 删除;标注式 RequireRateLimiting 仍需消费方 BeforeRouting 显式 UseRateLimiter) $(System.Collections.Specialized.OrderedDictionary[RateLimiting]) README 指南
SecurityLog V0.3.1 安全日志(登录/登出/改密/重置/锁定/注册/挑战事件 + IP/UA/结果 + 异常检测聚合 + 保留天数清理(V0.2.0) + 契约拆包(V0.3.0——公开契约迁 SecurityLog.Abstractions,命名空间不变) + 聚合 SQL 下推(V0.3.1:TopN 经 GroupCountAsync——V4.10.39 分组聚合 API)) $(System.Collections.Specialized.OrderedDictionary[SecurityLog]) README 指南
SecurityLog.Abstractions V0.1.0 安全日志契约抽象(ISecurityLogStore/ISecurityLogQueryService/ISecurityLogAnalyticsService + DTO/Options——ADR48 D7 依赖倒置,Account 消费方复用) — —(并入 SecurityLog)
Approval V0.2.2 轻量审批引擎(流程定义/审批实例/审批任务三实体 + 状态机 + 或签/会签 + 委派/加签/抄送/超时自动处理(v0.2.0)+ 完成事件回调;不依赖外部工作流引擎) $(System.Collections.Specialized.OrderedDictionary[Approval]) README 指南
OrganizationUnit V0.2.0 组织单元(树形部门/团队/分组 + 物化路径 Level/Path + 循环防护/删除保护 + 用户关联 + 事务包裹)+ VEntity 化/下推(V0.2.0:vw_UserOrganizationUnitView JOIN OU→OUUser 单查询 + GetSubTreeAsync/GetAncestorsAsync 单表 SQL 下推(精确前缀/Code IN)+ 用户归属双模式) $(System.Collections.Specialized.OrderedDictionary[OrganizationUnit]) README 指南
Calendar V0.1.2 日历/排程(日历+事件 CRUD + 重复规则子集(Utility 收纳:DAILY/WEEKLY/MONTHLY/YEARLY + 月末钳制 + 绝对索引)+ occurrence 查询/合并 + UTC 契约) $(System.Collections.Specialized.OrderedDictionary[Calendar]) README 指南
FileManagement V0.3.0 文件管理(目录树 + 文件元数据 SHA256/去重 + 文件版本化 + 配额(v0.2.0) + 用户级配额(v0.3.0:OwnerId 归属维度 + 所有权保留语义) + 并发上传竞态加固(v0.3.0:主表 UX 约束败者重查按内容决策——同内容幂等 / 不同内容新版本) + 上传 10 步安全链(防穿越/白名单/大小/ContentType 服务端推导)+ 依赖倒置 BlobStoring.Abstractions) $(System.Collections.Specialized.OrderedDictionary[FileManagement]) README 指南
BlobStoring.Abstractions V0.1.1 Blob 存储契约抽取(IBlobStorageService/BlobInfo/BlobStoringOptions——ADR50 L2 依赖倒置,FileManagement 消费) — — —(并入 BlobStoring)
FeatureManagement V0.3.2 功能管理/特性开关(接口判定编译期定义(v4.10.31 A+ 阶段 3)+ Provider 链分层值(v0.2.0 扩展点)+ IFeatureChecker 实现(接入 [RequireFeature])+ 复杂 ValueType 类型化读写(v0.3.0)+ 变更事件分布式广播(v0.3.0)+ 管理 API) $(System.Collections.Specialized.OrderedDictionary[FeatureManagement]) README 指南

列说明:README = 扩展技术规范(随 NuGet 发布,位于 _Framework/{扩展名}/);指南 = 使用指南(公开文档,位于 docs/{扩展名}/)。Permissions.Abstractions/Validation 无独立文档,详见 Permissions 的 README 与指南;SecurityLog.Abstractions 无独立文档,详见 SecurityLog 的 README 与指南。

全量 1582 测试全绿(32 测试项目——含 Identity/Notifications REST 直接暴露 8 用例 + v4.10.39 聚合 SQL 下推 3 用例 + 04 方案 OU/DataDictionary VEntity 下推 N1-N6 用例 + FileManagement v0.3.0 并发上传竞态加固用例(并发同名不同内容双成功) + v4.10.45 Web 装配钩子收敛迁移(4 先例 → IWebExtension + JwtAuth TestServer 黑盒哨兵冒烟——顺序串 ContextExtraction→JwtAuth验签→HttpAuthentication 锁定锚点分桶 P0-1))——dotnet test 零失败。(Approval v0.2.0 + FeatureManagement v0.3.0 + FileManagement v0.2.0 + Calendar + OrganizationUnit + 三件套基础设施 + BlobStoring 安全修复 + Tagging v0.4.0 + HealthCheck v0.2.0 + Notifications v0.2.0 多通道路由 + AuditLogging v0.3.0/v0.4.0 统计聚合与管理 API + Permissions v0.9.0 多用户批量权限检查 + Notifications v0.3.0 偏好路由与权限门控 + Notifications v0.4.0 SignalR 通道(12 用例,独立包) + Metrics v0.2.0 指标结果持久化(15 用例:Mapper 6 + Store 9) + SecurityLog v0.3.0/Account v0.4.0 契约拆包回归 + Authentication v0.2.0 查询契约 + UserCenter v0.1.0 档案面 + Identity v0.4.0/Notifications v0.5.0 VEntity REST 直接暴露(8 用例) + v4.10.39 聚合 SQL 下推(AuditLogging v0.4.2/SecurityLog v0.3.1/Tagging v0.4.3——GroupCountAsync/GroupByAsync 下推 + 空白键 SQL 过滤,3 用例) 后)


仓库定位

项 说明
主框架 _TKWF/(TKW.Framework 领域框架)
本仓库 TKWF 业务扩展包(TKWF.Ext.*)——独立版本,与主框架版本无关
引用模式 扩展经 PackageReference 引用主框架发布的 NuGet 包(TKWF.Domain 等,CPM 集中 Directory.Packages.props;2026-09-15 迁移——独立构建,消费方视角与 NuGet 模式一致)
版本管理 MinVer 自动管理(git tag 即版本);各扩展独立版本(各打各的 tag,命名空间前缀如 Identity/v0.1.0)

目录结构

_TKWF.Extensions/
├── _Framework/                     # 扩展源码(每个扩展一个项目)
│   ├── Permissions/                 # 权限扩展(V0.7.0:定义/检查/存储/管理 API/Admin.All)
│   ├── Permissions.Abstractions/    # 权限契约抽象(ADR48 D7 依赖倒置)
│   ├── Permissions.Validation/       # PERM001 编译期校验 Analyzer(V0.8.0,扩展侧)
│   ├── Identity/                     # 用户 + 角色 + 用户角色分配 + 凭据验证
│   ├── Account/                      # 账户锁定 + 密码重置流程(主框架缺口补齐)
│   ├── Navigation/                  # 菜单数据模型 + 贡献机制 + 权限过滤
│   ├── AuditLogging/                # 审计日志 FreeSql 存储
│   ├── Settings/                    # 设置管理 FreeSql 存储 + 分层读取
│   ├── BlobStoring/                 # 二进制存储(本地文件系统 + FreeSql 记录)
│   ├── Emailing/                    # SMTP/MailKit 邮件发送(V0.2.0:指数退避重试)
│   ├── Emailing.Abstractions/       # 邮件发送契约(IEmailSender——ADR48 D7 依赖倒置)
│   ├── DataDictionary/              # 数据字典集中管理
│   ├── Tagging/                     # 标签存储扩展(算法已回归 TKW.Framework.Utility.Tags)
│   ├── Notifications/              # 通知中心(发布/收件箱/订阅 + 多通道路由 + 偏好路由/权限门控)
│   ├── Notifications.SignalR/      # 通知中心 SignalR 实时推送通道(v0.4.0 独立包,服务端非 UI)
│   ├── BackgroundJobs/              # 后台任务持久化增强(执行历史 + 业务结果追踪)
│   ├── BackgroundJobs.Quartz/       # Quartz AdoJobStore 一键封装
│   ├── HealthCheck/                 # 系统健康探测(/health 端点接线 + 内置 DB 探针 v0.2.0)
│   ├── RateLimiting/                # Web 层限流接线(IP/用户分区 + 429)
│   ├── SecurityLog/                 # 安全日志(登录/改密/锁定等安全事件)
│   ├── Approval/                    # 轻量审批引擎(流程定义/实例/任务 + 状态机)
│   ├── OrganizationUnit/            # 组织单元(树形部门/团队/分组 + 用户归属)
│   ├── Calendar/                    # 日历/排程(日历+事件 + 重复规则子集)
│   ├── BlobStoring.Abstractions/    # Blob 存储契约(IBlobStorageService——ADR50 L2 依赖倒置)
│   ├── FileManagement/              # 文件管理(目录树 + 文件元数据 + 版本化/配额 + 上传安全链)
│   └── FeatureManagement/           # 功能管理(特性开关——定义收集 + 分层值 + IFeatureChecker)
├── _Tests/                          # 测试(一组扩展一个测试项目)
│   ├── Extension.Permissions.Tests/
│   ├── Extension.Permissions.Consumer/    # 消费方集成验证
│   ├── Extension.Permissions.Validation.Tests/  # Analyzer 单测
│   ├── Extension.Identity.Tests/
│   ├── Extension.Account.Tests/
│   ├── Extension.Navigation.Tests/
│   ├── Extension.AuditLogging.Tests/
│   ├── Extension.Settings.Tests/
│   ├── Extension.BlobStoring.Tests/
│   ├── Extension.Emailing.Tests/
│   ├── Extension.DataDictionary.Tests/
│   ├── Extension.Tagging.Tests/
│   ├── Extension.OrganizationUnit.Tests/
│   ├── Extension.Calendar.Tests/
│   ├── Extension.FileManagement.Tests/
│   └── Extension.FeatureManagement.Tests/
├── docs/                           # 公开使用指南(每个扩展一份)
│   ├── Permissions/权限扩展-使用指南.md
│   ├── Identity/身份管理扩展-使用指南.md
│   ├── Account/账户管理扩展-使用指南.md
│   ├── Navigation/导航扩展-使用指南.md
│   ├── AuditLogging/审计日志扩展-使用指南.md
│   ├── Settings/设置管理扩展-使用指南.md
│   ├── BlobStoring/二进制存储扩展-使用指南.md
│   ├── Emailing/邮件发送扩展-使用指南.md
│   ├── DataDictionary/数据字典扩展-使用指南.md
│   ├── Tagging/标签服务扩展-使用指南.md
│   ├── OrganizationUnit/组织单元扩展-使用指南.md
│   ├── Calendar/日历排程扩展-使用指南.md
│   ├── FileManagement/文件管理扩展-使用指南.md
│   └── FeatureManagement/功能管理扩展-使用指南.md
├── Directory.Build.props           # TKWFSourceRoot + MinVer + 打包属性
├── Directory.Packages.props         # CPM 集中包版本
├── AGENTS.md                        # 扩展仓库开发规则(AI Agent 与人工开发者必读)
└── TKWF.Extensions.slnx            # 扩展解决方案

扩展设计文档(开发方案/ADR/设计思路)+ 使用指南存放于本公开仓库 docs/(2026-09-15 裁定后新方案落公开仓库;历史方案/审核报告/总览跟踪在主框架私有仓库 _TKWF/docs/03_扩展模块/,渐进迁移)。


架构模式

所有扩展遵循统一架构模式(异常静默 + TryAddScoped + SG1 声明式实体):

扩展项目(net10.0)
├── Entity(partial class + [Table] + [DomainGenerateCode] + FreeSql [Column])
├── Store 抽象 + FreeSql 实现(internal sealed + 异常静默)
├── Manager 门面(internal sealed + 聚合查询)
├── ExtensionInitializer([TKWFExtension] + TryAddScoped 三钩子)
└── README.md(技术规范)

测试项目(xunit.v3 + FreeSql SQLite 内存)
├── ConsumerHostInitializer([TKWFEnabledExtension] 白名单样板)
└── 测试类(Store CRUD + Manager 聚合 + Initializer DI + 异常静默)

扩展启用(v4.9.85+ 必需)

扩展不再"发现即启用"——消费方须在领域初始化器上显式声明白名单:

using TKWF.Ext.Identity;

[TKWFEnabledExtension(typeof(IdentityExtensionInitializer<>))]
public class MyDomainInitializer : DomainHostInitializerBase<MyUserInfo> { ... }

声明后扩展三钩子(ConfigureServices/ConfigureFilters/InitializeAsync)自动接线。

依赖倒置(ADR48 D7)

扩展间依赖走 .Abstractions(接口/契约),不引用实现项目——L2 门控硬约束(TKWF0022 Error)。

Navigation → Permissions.Abstractions(✅ 合法)
Navigation → Permissions(❌ TKWF0022 Error)

快速开始

消费方引用扩展

NuGet 包模式(消费方推荐——扩展已发布 TKWF.Ext.* NuGet 包):


<PackageReference Include="TKWF.Ext.Identity" Version="0.3.3" />

源码模式(本仓库开发/联调主框架新 API 时):


<ProjectReference Include="..\_TKWF.Extensions\_Framework\Identity\TKWF.Ext.Identity.csproj" />

双模式并存:扩展自身构建用 PackageReference(主框架包);需调试主框架源码新 API 时可临时切源码引用——消费方视角与 NuGet 模式一致。

启用 + 使用

// 1. 白名单声明(v4.9.85+)
[TKWFEnabledExtension(typeof(IdentityExtensionInitializer<>))]
public class MyDomainInitializer : DomainHostInitializerBase<MyUserInfo> { ... }

// 2. 注入 + 使用
public class AuthService(IUserManager userManager)
{
    public async Task<UserEntity?> LoginAsync(string name, string password)
        => await userManager.VerifyCredentialsAsync(name, password);
}

版本管理

MinVer:各扩展包独立版本(git tag 命名空间前缀 + csproj MinVerTagPrefix 对齐,如 Identity/v0.3.2 → 0.3.2)
公共内容(构建基建/无扩展归属):无前缀 v tag(如 v0.8.2)

机制:
- 每个扩展 csproj 设 <MinVerTagPrefix>{扩展名}/v</MinVerTagPrefix>——MinVer 只匹配该扩展自己的前缀 tag,
  各扩展版本完全独立(Permissions 0.9.x 与 Identity 0.3.x 互不影响)
- 扩展 tag 命名:{扩展名}/v{major}.{minor}.{patch}(如 Permissions/v0.9.0、Notifications/v0.3.0)
- 公共内容(Directory.Build.props/构建脚本等无扩展归属的变更):打无前缀 v tag(既有 v0.1.0~v0.8.2)
- 契约包(*.Abstractions)独立 tag:Account.Abstractions/v0.1.0 等,版本与主扩展独立演进
- 与主框架 _TKWF 版本完全独立
Tag 纪律:必须有开发方案 + 审核报告,且征得用户同意

扩展规划

  • P0(必须):11/11 全部完成 ✅——Identity / Account / Navigation / AuditLogging / Settings / BlobStoring / Emailing / DataDictionary / Tagging / PrintTemplates + Permissions(V0.9.0)。注:Tagging 标签算法已按 ADR52 回归主框架 TKW.Framework.Utility.Tags,扩展保留存储层。
  • P1(推荐):17 扩展已实施(后台任务/功能管理/通知+SignalR/限流/健康检查/安全日志/组织单元/文件管理/审批/导入导出/日历/仪表盘/打印模板/指标/标签存储/数据字典);剩余 15 项按需推进(OpenIddict/MFA/SSO/LDAP/后台服务/安全防护/媒体库/搜索/动态表单/动态字段/工作流/文本模板/报表/文档管理/ApiDocs)。
  • P2(待定):20 项全部按需启用(CMS/支付/订阅/聊天/GraphQL/可观测性/数据分析BI 等)。

NuGet 发布(2026-09-15)

  • 30 包已发布 nuget.org(TKWF.Ext.*,v0.1.x–v0.9.x,依赖主框架稳定包 4.10.24)——经 GitHub Actions + Trusted Publishing(OIDC 免 API key:NuGet/login@v1 + nuget.org policy + NUGET_USER secret)自动发布,CI run 34897984278 30/30 pushed 确认。
  • 后续版本发布:各扩展打 {扩展名}/v{x.y.z} tag(patch bump 指向目标 commit)→ push tag 即触发 CI 全量重建 + 发布(--skip-duplicate 幂等)。

设计思路与 ABP 兼容策略(最优设计为默认、兼容 ABP 为特殊需求、碰巧兼容只记录)+ 各扩展设计分类见 docs/扩展模块设计思路与ABP兼容策略.md;状态跟踪见主框架私有 _TKWF/docs/03_扩展模块/总览和跟踪.md。


许可证

Copyright © 2026 LoongBa · Apache-2.0

开源、允许商用与闭源衍生,但必须保留版权与归属声明(Attribution)。

相关仓库

  • TKW.Framework(主框架) — 领域框架 + 扩展机制(TKWFExtensionAttribute + ExtensionInitializer 三钩子 + SG1 发现 + [TKWFEnabledExtension] 白名单启用 + 三层门控 ADR50)
  • LoongBa-Scaffold — 文档体系脚手架来源
Product 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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.1-preview.0.196 0 10/30/2026
0.3.1-preview.0.193 28 10/30/2026
0.3.1-preview.0.192 31 10/30/2026
0.3.1-preview.0.150 37 10/27/2026
0.3.1-preview.0.149 45 10/27/2026
0.3.1-preview.0.146 59 10/26/2026
0.3.1-preview.0.138 56 10/26/2026
0.3.1-preview.0.137 52 10/25/2026
0.3.1-preview.0.136 53 10/25/2026
0.3.1-preview.0.131 51 10/24/2026
0.3.1-preview.0.129 52 10/24/2026
0.3.1-preview.0.99 57 10/21/2026
0.3.1-preview.0.96 55 10/21/2026
0.3.1-preview.0.90 57 10/20/2026
0.3.1-preview.0.79 45 10/20/2026
0.3.1-preview.0.78 51 10/20/2026
0.3.1-preview.0.71 54 10/18/2026
0.3.1-preview.0.69 55 10/17/2026
0.3.1-preview.0.60 58 10/17/2026
0.2.0 99 10/1/2026
Loading failed