FreeKit 功能总览
FreeKit 是一套基于 FreeSql + Autofac 的模块化单体(modular monolith)框架。它把企业应用常见的基础设施能力拆成一组可单独引用的 NuGet 包,再用统一的模块启动协议(IModuleStartup)拼装成单体应用。
这一页是框架能力的「首页」:先按 能力域 看清 FreeKit 提供什么,再用 按场景找包 决策助手定位你要的那一个,最后用依赖关系图理解包之间的来龙去脉。
能力域一览
FreeKit 的全部能力可以归到 7 个域:
| 能力域 | 解决什么问题 | 包含包 |
|---|---|---|
| 数据访问与领域核心 | 审计实体、领域事件、FreeSql 仓储/事务、当前用户、Autofac 注册 | IGeekFan.FreeKit(Core)、IGeekFan.FreeKit.Extras |
| 模块化与分层 | ASP.NET Core 模块启动协议、[module] 路由约定 | IGeekFan.FreeKit.Modularity |
| 身份认证与授权 | ASP.NET Core Identity 的 FreeSql Store、OpenIddict 授权服务 | Identity.FreeSql、OpenIddict.FreeSql |
| 本地化 | 数据库驱动的本地化资源 | Localization.FreeSql |
| 通信与实时 | 邮件发送、SignalR Redis 背板 | Email、SignalR.FreeRedis |
| 缓存 / 健康 / 防护 | DataProtection Key 存储、分布式输出缓存、数据库健康检查 | DataProtection.FreeRedis、DataProtection.FreeSql、OutputCaching.FreeRedis、HealthChecks.FreeSql |
| 对象存储 | Cloudflare R2 客户端 | R2.NET |
下面按域展开,每个包给出一句话定位与文档入口。
数据访问与领域核心
- Core(
IGeekFan.FreeKit):审计实体基类、领域事件、IDomainEvent标记,以及依赖注入约定。绝大多数包都复用它的审计与事件抽象。 → Core - Extras(
IGeekFan.FreeKit.Extras):FreeSql 仓储、工作单元/事务([Transactional])、当前用户(CurrentUser)、Autofac 模块注册。是业务模块落地的基座。 → Extras
模块化与分层
- Modularity(
IGeekFan.FreeKit.Modularity):IModuleStartup启动协议与api/[module]/[controller]路由约定,让多个业务模块共享一个宿主而不互相耦合。 → Modularity
身份认证与授权
- Identity.FreeSql(
IGeekFan.AspNetCore.Identity.FreeSql):把 ASP.NET Core Identity 的 User/Role Store 接到 FreeSql,开箱支持用户、角色、声明。 → Identity.FreeSql - OpenIddict.FreeSql(
IGeekFan.OpenIddict.FreeSql):OpenIddict 授权服务器的 FreeSql Store 实现,支持 OAuth2 / OIDC 授权码、客户端凭据等流程。 → OpenIddict.FreeSql
本地化
- Localization.FreeSql(
IGeekFan.Localization.FreeSql):基于数据库资源的本地化,配合_localizer["Key"]按请求语言返回文案。 → Localization.FreeSql
通信与实时
- Email(
IGeekFan.FreeKit.Email):基于 MailKit 的邮件发送抽象,验证码、通知邮件一行调用。 → Email - SignalR.FreeRedis(
IGeekFan.AspNetCore.SignalR.FreeRedis):SignalR 的 FreeRedis 背板,多实例下消息广播互通。 → SignalR.FreeRedis
缓存 / 健康 / 防护
- DataProtection.FreeRedis / DataProtection.FreeSql:把 ASP.NET Core DataProtection 的 Key 存到 Redis 或数据库,多实例共享密钥。 → DataProtection.FreeRedis · DataProtection.FreeSql
- OutputCaching.FreeRedis(
IGeekFan.AspNetCore.OutputCaching.FreeRedis):输出缓存的 FreeRedis 分布式存储,多实例命中一致。 → OutputCaching.FreeRedis - HealthChecks.FreeSql(
IGeekFan.Extensions.Diagnostics.HealthChecks.FreeSql):FreeSql 连接健康检查,接入/health。 → HealthChecks.FreeSql
对象存储
- R2.NET(
IGeekFan.R2.NET):Cloudflare R2 对象存储客户端,上传/下载/签名 URL。 → R2.NET
按场景找包
不确定用哪个包?从你的问题出发:
- 需要审计实体、领域事件 → Core
- 需要 FreeSql 仓储、事务、
CurrentUser→ Extras - 需要模块化单体、
[module]路由 → Modularity - 需要用户注册/登录、角色权限 → Identity.FreeSql
- 需要多语言 / 本地化 → Localization.FreeSql
- 需要发邮件 → Email
- 需要分布式缓存 / Redis 背板(DataProtection、SignalR、OutputCache)→ DataProtection.FreeRedis、SignalR.FreeRedis、OutputCaching.FreeRedis
- 需要数据库健康检查 → HealthChecks.FreeSql
- 需要 OAuth2 / OIDC 授权服务 → OpenIddict.FreeSql
- 需要对象存储(R2) → R2.NET