mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-06 16:16:44 +08:00
- 优化 generated registry 激活流程,使用缓存工厂委托优先替代 ConstructorInfo.Invoke\n- 补充私有无参构造 registry 的回归测试,保持生成器产物兼容性\n- 更新 CQRS ai-plan 恢复点与验证记录,指向新的 Phase 8 下一步
4.1 KiB
4.1 KiB
CQRS 重写迁移跟踪
目标
围绕 GFramework 当前的双轨 CQRS 现状,继续完成以“去外部依赖、降低反射、收口公开入口”为目标的
CQRS 迁移与收敛。
当前恢复点
- 恢复点编号:
CQRS-REWRITE-RP-046 - 当前阶段:
Phase 8 - 当前焦点:
- 当前功能历史已归档,active 跟踪仅保留
Phase 8主线的恢复入口 - 已完成 generated registry 激活路径收敛:
CqrsHandlerRegistrar现优先复用缓存工厂委托,避免重复ConstructorInfo.Invoke - 已补充私有无参构造 generated registry 的回归测试,确保兼容现有生成器产物
- 中期上继续
Phase 8主线:参考ai-libs/Mediator,继续扩大 generator 覆盖,并选择下一个收益明确的 dispatch / invoker 反射收敛点
- 当前功能历史已归档,active 跟踪仅保留
当前状态摘要
- 已完成
Mediator外部依赖移除、CQRS runtime 重建、默认架构接线和显式程序集 handler 注册入口 - 已完成
GFramework.Cqrs.Abstractions/GFramework.Cqrs项目骨架与 runtime seam 收敛 - 已完成 handler registry generator 的多轮收敛,当前合法 closed handler contract 已统一收敛到更窄的注册路径
- 已完成一轮公开入口文档与 source-generator 命名空间收口
- 已接入
$gframework-pr-review,可直接抓取当前分支对应 PR 的 CodeRabbit 评论、checks 和测试结果
当前活跃事实
Phase 8仍是当前主线,不再回退到Phase 72026-04-20已重新执行$gframework-pr-review:PR #253当前状态为CLOSED- latest reviewed commit 仍显示
1条 open thread,但其内容针对的是已过时的Phase 7恢复建议 - 当前 active tracking / trace 已统一到
Phase 8,因此该 thread 不再作为当前主线阻塞项
2026-04-20已完成一轮冷启动反射收敛:- generated registry 类型首次分析后,会缓存一个可复用的激活工厂,而不是在后续容器注册时重复走
ConstructorInfo.Invoke - 若运行环境不允许动态方法,仍保留原有的反射激活回退,避免阻塞 generated registry 路径
GFramework.Cqrs.Tests已补充“私有无参构造 registry 仍可激活”的回归覆盖
- generated registry 类型首次分析后,会缓存一个可复用的激活工厂,而不是在后续容器注册时重复走
- 当前主线优先级:
- generator 覆盖面继续扩大
- dispatch/invoker 反射占比继续下降
- package / facade / 兼容层继续收口
当前风险
- 当前
dotnet build GFramework.sln -c Release在 WSL 环境仍会受顶层GFramework.csproj的 Windows NuGet fallback 配置影响 - 当前
GFramework.Cqrs.Tests仍直接引用GFramework.Core,说明测试已按模块意图拆分,但 runtime 物理迁移尚未完全切断依赖 RegisterMediatorBehavior、MediatorCoroutineExtensions与ContextAwareMediator*Extensions仍作为兼容层存在,未来真正移除时仍需单独规划弃用窗口
活跃文档
- 模块拆分计划:
ai-plan/migration/CQRS_MODULE_SPLIT_PLAN.md - 历史跟踪归档:cqrs-rewrite-history-through-rp043.md
- 历史 trace 归档:cqrs-rewrite-history-through-rp043.md
验证说明
RP-043之前的详细阶段记录、定向验证命令和阶段性决策均已移入主题内归档- active 跟踪文件只保留当前恢复点、当前活跃事实、风险和下一步,避免
boot在默认入口中重复扫描 1000+ 行历史 trace dotnet test GFramework.Cqrs.Tests/GFramework.Cqrs.Tests.csproj -c Release --no-restore -p:RestoreFallbackFolders= -m:1 -nodeReuse:false- 结果:通过
- 备注:
63/63测试通过;当前沙箱限制了 MSBuild named pipe,验证需在提权环境下运行
下一步
- 继续
Phase 8主线,优先选择下一个收益明确的 dispatch / invoker 反射收敛点继续推进 - 若继续文档主线,优先再扫
docs/zh-CN/api-reference与教程入口页,补齐仍过时的 CQRS API / 命名空间表述 - 若后续再出现新的 PR review 或 review thread 变化,再重新执行
$gframework-pr-review作为独立验证步骤