XiHan Framework 处于预览阶段

查看获取方式
跳转到内容

发展大事记 ​

这一页按时间讲 XiHan Framework 是怎么走到今天的:从一个给自己项目用的基础库,到四个大版本的全家桶式框架,再到 2026 年秋天推倒重来的 5.0。写它的目的不是怀旧,而是让你知道当前这套设计是从哪些教训里长出来的。完整的版本变更见更新日志。

2024 年:建仓 ​

2024 年 8 月我建了这个仓库。最初只有一个解决方案骨架和一个基础库,目的很单纯:把我在业务项目里反复写的工具方法、扩展方法、序列化与日志封装收拢到一处,让曦寒懿生态下的几个应用共用一份代码。那时它还谈不上框架,只是「我的公共库」。

2025 年:1.x,从工具库长成框架 ​

时间事件
2025 年 8 月发布 1.0.0-alpha。重构工具库,重写序列化器,整理模块命名;恢复机器人、脚本、虚拟文件系统等包
2025 年 9 月1.1 到 1.3:初始化 Domain 与 Data 两个包,实体与仓储成形;加入命令行、后台服务、计划任务、高性能文件日志、gRPC 支持
2025 年 10 月1.4:加入动态 WebAPI,应用服务直接变成接口;仓储、分页、审计字段统一
2025 年 11 月1.4.5:分布式 ID 生成库成形,命名空间整理

这一年的路线很像所有「全家桶」框架走过的路:业务里缺什么就往框架里加什么。好处是开发速度快,坏处是包之间的依赖越来越像一张网。

2026 年上半年:2.x 与 3.x,能力补齐 ​

时间事件
2026 年 1 月发布 2.0.0。认证授权、数据库初始化与种子数据、基于 SignalR 的实时通信、流量治理、可观测性、对象存储(本地、阿里云 OSS、腾讯云 COS、MinIO)一起进来
2026 年 2 月2.2:多租户实体基类、租户数据隔离与解析透传、通用响应信封
2026 年 3 月到 5 月2.3 到 2.5:分页、种子、租户字段、OpenAPI 标签等持续打磨
2026 年 6 月发布 3.0.0。国际化机制(请求文化中间件、可本地化异常、响应本地化)、异常统一输出、分布式锁与延迟队列
2026 年 7 月3.x 密集迭代:AI 子系统分五个里程碑落地(OpenAI 兼容 Provider、嵌入与 RAG、Agent 与技能注册、护栏与遥测);RabbitMQ、Kafka、Redis 三种事件总线 Broker;后台作业管理器;会话状态闸门;行版本乐观锁;动态连接注册器;工作流引擎;MCP Server 端下沉到框架
2026 年 8 月搜索引擎抽象与 Elasticsearch 实现;OpenID Connect 协议层;八家 OAuth 提供商全部自研,新增微信、企业微信、飞书、钉钉登录

到 3.14,框架已经覆盖了企业应用需要的大多数横切能力。也是在这个阶段,我开始感到不安:包的数量和它们之间的隐式依赖已经让「换一个实现」变得困难,很多能力靠基类和拦截器实现,运行期反射到处都是,Native AOT 几乎不可能。

2026 年 8 月到 10 月:4.x,收口与反思 ​

时间事件
2026 年 8 月 28 日发布 4.0.0。整理命名空间与解决方案结构;库隔离租户按约定自带整套模块库
2026 年 9 月平台成为 0 号租户,无租户上下文不再「看全部、写全部」;实体可声明固定落平台库;默认内存实现重命名并约束用途;MCP 工具暴露支持允许与拒绝清单
2026 年 10 月4.7 与 4.8:命令行工具 XiHan.Framework.Cli 提供包、模块、配置节与文档的离线知识库;工作流按受理人规则解析审批人;权限判定带请求上下文并记录拒绝原因;可配置条件的求值器;IP 归属地抽象

4.x 是 1.x 到 3.x 这条路线的终点。它能用,也在生产里跑着,但我已经清楚地看到几件靠修修补补解决不了的事:

  • 依赖写在模块特性和基类上,关系要到运行时才知道;换 ORM、换缓存要改业务代码。
  • 横切逻辑散在拦截器、过滤器和基类虚方法里,顺序靠约定,没人能一眼说出一次请求经过了什么。
  • 同一个业务要同时提供 REST、gRPC 与 MCP,得写三份胶水。
  • 反射与动态代理让 Native AOT 和启动性能无从谈起。
  • 命名随手取,Core、Common、Manager 满天飞,包名推不出它的职责。

2026 年 10 月:5.0,从零重写 ​

2026 年 10 月 20 日前后,我决定不再在 4.x 上改,而是在一个独立分支上从零开始写第五代。先写方案,再定边界,再写代码。这次的顺序是:总体方案、架构定位与设计哲学、代码规范、功能扁平化定义、开发计划;然后把公共契约先写进语言中立的规范 XiHan Spec,每条决策落成一份架构决策记录;最后才是实现。

八项关键决策在重写第一天就定下来:所有包共享一条版本线;原语层与内核分包,原语层冻结;内核只做一个包;第二语言 Go 先行;持久化以 EF Core 优先;进程外 gRPC 插件协议进 5.0,Wasm 标实验;规范先放仓库内、公开时拆出;4.x 继续维护 24 个月。

之后的进度按门槛推进,不按日期排期:

时间阶段事件
10 月 21 日P0 定边界目录骨架、构建属性、CI 门禁、架构测试、规范草案(原语、清单、上下文、管道阶段、术语表)、首批架构决策
10 月 21 日P1 内核原语层按规范落地;内核实现特性装配与生命周期状态机、能力图谱求解、阶段化管道、诊断薄桥、安全原语与插件抽象;ASP.NET Core 宿主、进程内插件宿主、测试基座、Roslyn 分析器、Native AOT 示例
10 月 21 日P2 子系统Domain 与持久化、缓存、消息、安全、多租户五个子系统的抽象、内存默认实现与一致性套件;EF Core、Redis、RabbitMQ、JWT 四个 Provider;Minimal 与 Standard 组合包;本地化模型定稿:文案不写在代码里,每种语言一个文件
10 月 22 日P3 协议与宿主操作契约与调用器;源生成器产出登记代码与 JSON Schema;HTTP 适配器与 OpenAPI;MCP 适配器
10 月 23 日P3 收尾gRPC 与 CloudEvents 适配器;命令行宿主与 MCP stdio;对象存储、调度、远程配置、审计四个子系统;OpenTelemetry 导出;持久化生成器;xihan pack;Kubernetes 示例;Full 组合包;OpenID Connect Provider
10 月 23 日P4 插件与跨语言进程外插件协议 xihan.plugin.v1 进入规范;进程外插件宿主;Wasm 插件宿主与 Rust 示例;插件协议一致性套件;规范拆为独立仓库并公开;Go SDK 发布,Go 写的插件在 .NET 宿主里服务操作,Go 写的缓存经远程 Provider 通过一致性套件
10 月 23 日起P5 走向正式版批量优先审查:所有对集合的操作都有一次调用完成的批量方法;SqlSugar Provider
10 月 26 日P5租户分片、IDistributedCache 适配、S3 对象存储;Kafka 流、两级缓存、Nacos 远程配置;调度子系统重做并加入数据库 Provider;工作流子系统与数据库 Provider;AI 子系统:以 Microsoft.Extensions.AI 为线格式,操作契约可直接成为模型工具
10 月 27 日到 31 日P5十项能力补齐:SqlSugar 多库与分表、Validate 阶段契约校验、领域事件派发、多租户与安全与审计的数据库 Provider、Resilience 阶段、Provider 健康项、OpenAPI 权限扩展;雪花标识;OpenAPI 文案与分组;调用来源;条件引擎;IP 归属地;对象存储范围读取、分片上传、预签名与命名实例;绕过管道的端点认证;运行信息;作业重试与执行时限
11 月 4 日P5SqlSugar 读写分离与命令超时;出站地址策略;网络入站不接受自报的租户与主体
11 月 5 日5.0.0-preview.1开发分支切到 dev,第一个预览版发布到 nuget.org;4.x 转入维护
11 月 6 日5.0.0-preview.2全部包的描述与 README 重写,命令行字段选项按请求 Schema 写类型

现在 ​

5.0 仍是预览版,公开面多数标为 Preview 或 Experimental。接下来的门槛是 BasicApp 全量跑在框架上、公开 API 审查与冻结、包验证基线与性能基准,然后发布 5.0.0 并声明 LTS。路线见路线图。

下一步 ​

Released under The MIT License