mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 00:39:00 +08:00
3.3 KiB
3.3 KiB
CQRS 重写迁移追踪
2026-04-14
阶段:初始化
- 建立
CQRS-REWRITE-RP-001恢复点 - 已确认本次迁移目标:
- 彻底参考
Mediator思路重写 GFramework 正式 CQRS - 不保留对
Mediator的兼容层 - 使用
abstractions + runtime 可选模块边界 - 保留
EventBus,不与 CQRS notification 合并
- 彻底参考
已确认的实现前提
CoreGrid-Migration当前仍依赖 NuGet 版GeWuYou.GFramework*CoreGrid/scripts/core/GameArchitecture.cs与CoreGrid-Migration/scripts/core/GameArchitecture.cs通过AddMediator(...)启用基于生成器的 runtimeGFramework当前IArchitectureContext与一批 CQRS 基类直接引用Mediator.*CoreGrid/scripts/cqrs/**的 handler 很薄,主要迁移成本在框架 runtime 和注册机制,不在业务逻辑本身
当前动作
- 准备更新
AGENTS.md,补充恢复点 / trace / subagent 协作规范 - 准备将
CoreGrid-Migration切换为本地项目引用,建立真实验证链路
下一步
- 完成
AGENTS.md规则补充 - 改造
CoreGrid-Migration/CoreGrid.csproj为本地项目与本地生成器引用 - 进行第一次构建验证,确认本地链路可用
阶段:CQRS 主路径迁移完成
CoreGrid-Migration/CoreGrid.csproj已切到本地ProjectReference+ 本地 source generatorsCoreGrid-Migration/scripts/core/GameArchitecture.cs已删除AddMediator(...)配置钩子GFramework.Core.Abstractions新增 GFramework 自有 CQRS 契约与UnitIArchitectureContext/ArchitectureContext已切到自有 CQRS 签名ArchitectureBootstrapper已内建 handler 扫描注册,使用方无需再显式调用AddMediator(...)CqrsDispatcher已补齐 request/notification/stream dispatch 与 pipeline behavior 执行GFramework.Core.Cqrs.*基类、ContextAwareMediator*Extensions、Godot 协程上下文扩展均已迁到新契约GFramework.Core.Tests中原依赖旧Mediator注册入口的测试已迁移到CqrsTestRuntime反射注册路径
阶段:验证
dotnet build /mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/GFramework/GFramework.Core/GFramework.Core.csproj- 结果:通过
dotnet build /mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/GFramework/GFramework.Core.Tests/GFramework.Core.Tests.csproj- 结果:通过
dotnet test /mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/GFramework/GFramework.Core.Tests/GFramework.Core.Tests.csproj --no-build- 结果:通过
- 明细:
1621个测试全部通过
dotnet build /mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/GFramework/GFramework.sln- 结果:通过
dotnet build /mnt/f/gewuyou/System/Documents/WorkSpace/GameDev/CoreGrid-Migration/CoreGrid.sln- 结果:通过
- 备注:仅存在既有 analyzer warnings,无新增构建错误
当前残留
- 文档与少量历史 API 命名仍保留
Mediator前缀 MediatorCoroutineExtensions与少量测试仍依赖Mediator.Abstractions- handler 自动注册当前使用运行时反射扫描,尚未切回生成器注册
下一步建议
- 决定是否继续做“完全移除
Mediator.Abstractions包”的第二阶段清理 - 若继续,优先迁移协程扩展与相关测试
- 评估是否将
RegisterMediatorBehavior、ContextAwareMediator*Extensions等历史命名升级为 CQRS 中性命名