Refactor/cqrs architecture decoupling#234
Merged
Merged
Conversation
- 启用auto_review功能以进行代码审查 - 添加refactor/cqrs-architecture-decoupling作为基础分支 - 配置草稿PR时不进行审查的选项 - 设置聊天自动回复功能
- 实现抽象命令处理器基类支持命令处理 - 添加流式命令处理器基类支持异步流式响应 - 创建查询处理器基类提供统一查询处理接口 - 实现查询基类提供通用查询结构定义 - 扩展架构上下文接口集成CQRS运行时入口 - 定义消息处理器委托支持管道行为处理 - 实现CQRS处理器注册器扫描并注册处理器 - 添加架构模块行为测试验证模块安装功能 - 创建中介器高级特性测试覆盖边界场景
- 实现 AbstractStreamCommandHandler 基类支持流式命令处理 - 创建 CqrsHandlerRegistrar 自动扫描注册 CQRS 处理器 - 添加流式处理器接口 IStreamRequestHandler 支持 - 实现处理器注册的容错机制和类型加载恢复 - 添加确定性排序确保跨环境稳定的处理器注册顺序 - 提供完整的单元测试验证注册行为和异常处理
…pling-todo-1 Replace Mediator runtime with built-in CQRS
- 新增 CQRS 详细文档,介绍命令查询职责分离模式 - 添加核心框架概述文档,包含架构图和快速开始指南 - 详细介绍五层架构设计和组件联动机制 - 提供完整的最佳实践和设计理念说明 - 添加架构生命周期管理和模块化设计说明
- 新增 CQRS 模块详细文档,介绍命令查询职责分离模式 - 添加核心框架架构概述和五层架构设计说明 - 补充快速开始指南和最佳实践建议 - 完善包说明和组件联动机制介绍 - 添加架构生命周期管理和模块化设计说明
- 新增 CQRS 核心概念、命令查询处理器使用指南 - 添加管道行为、流式处理和最佳实践说明 - 实现 CQRS 协程扩展方法支持异步命令执行 - 添加 ContextAware 接口的 CQRS 命令查询扩展 - 集成 Microsoft DI 容器依赖注入支持 - 补充架构模块行为测试验证功能完整性 - 扩展 GameContext 测试用例提高代码覆盖率
- 实现 CqrsCoroutineExtensions 扩展类,提供协程方式发送 CQRS 命令的功能 - 添加 SendCommandCoroutine 方法支持命令异步执行与异常处理 - 实现取消操作的特殊处理逻辑,区分取消、失败和成功状态 - 添加 ContextAwareCqrsCommandExtensions 扩展类,提供同步和异步命令发送方法 - 增加对 TaskCanceledException 的专门处理机制 - 完善相关单元测试,验证取消操作的异常处理行为
- 将TaskCanceledException更改为Exception以反映实际抛出的异常类型 - 更新异常描述以准确说明在未提供onError时的行为 - 修正文档以反映底层原始异常的传递机制
- 添加 TaskCanceledException 映射以统一取消状态处理 - 保留原始异常调用栈以避免调试时丢失异常来源 - 优先解包业务异常以避免直接暴露 AggregateException - 使用 ExceptionDispatchInfo.Capture 确保异常栈信息完整
- 添加了TaskCanceledException异常说明文档 - 详细描述了命令调度取消时的异常情况 - 补充了底层命令调度相关的异常处理说明
…pling-todo-2 Replace Mediator pattern with CQRS pipeline behavior registration
- 添加完整的 CQRS 中文文档,涵盖命令、查询、处理器、管道行为等核心概念 - 实现 ArchitectureModules 类用于管理架构模块安装和 CQRS 行为注册 - 重构 Architecture 类为协调器模式,委托给专门的管理器组件 - 添加 RegisterCqrsPipelineBehavior 方法替代旧的 RegisterMediatorBehavior - 标记旧的扩展方法为 Obsolete 并提供新的兼容性别名 - 实现模块化架构组件注册和生命周期管理功能
- 新增 CQRS 核心概念介绍,包括命令、查询、处理器和分发器 - 添加基本用法示例,展示命令和查询的定义与发送流程 - 实现高级功能文档,涵盖请求、通知、管道行为和流式处理 - 提供最佳实践指南,明确命令查询分离和验证行为使用方式 - 增加常见问题解答,解释 Command/Query 区别和错误处理方案 - 新增 CQRS 处理器自动注册实现,支持源码生成和反射扫描 - 添加单元测试验证处理器注册顺序和容错行为 - 更新项目 AI 代理说明文档,完善模块依赖关系图
- 实现 CqrsHandlerRegistryGenerator 源代码生成器 - 支持 IRequestHandler、INotificationHandler 和 IStreamRequestHandler 接口的处理器注册 - 生成程序集级别的 CQRS 处理器注册器以减少运行时反射开销 - 添加对请求、通知和流处理器的稳定顺序注册支持 - 实现对私有嵌套处理器的检测和回退机制 - 提供字符串字面量转义功能以避免生成代码中的语法错误 - 添加完整的单元测试验证生成器的功能和边界条件
…pling-todo-3 Refactor/Deprecate Mediator alias and introduce source-generated CQRS handler registry
- 完整介绍 CQRS 核心概念包括命令、查询、处理器和分发器 - 提供命令和查询的定义与实现示例代码 - 详细介绍处理器编写方法和注册流程 - 说明管道行为(Behaviors)的使用方式 - 展示通知(Notification)和流式处理功能 - 提供最佳实践和常见问题解决方案 - 包含完整的 API 参考和用法示例
- 创建 Architecture 基类提供系统、模型、工具等组件的注册与管理功能 - 实现架构生命周期管理、初始化流程控制和阶段转换功能 - 添加 ArchitectureModules 模块管理器负责 CQRS 行为注册和模块安装 - 实现 MicrosoftDiContainer 依赖注入容器适配器 - 支持单例、瞬态、作用域服务注册和工厂方法注册 - 添加 CQRS 请求管道行为和处理器注册功能 - 实现线程安全的读写锁保护容器操作 - 提供服务获取、排序和优先级管理功能
- 配置CI构建和测试工作流,支持多.NET版本和并发测试 - 添加CodeQL静态代码分析工作流 - 实现自动版本递增和标签创建工作流 - 定义CQRS命令接口规范,包括响应式和流式命令 - 为架构测试添加空值参数异常文档注释
- 移除push触发器,仅保留pull request触发CI构建测试 - 添加CodeQL静态代码分析工作流,支持安全漏洞检测 - 配置每日凌晨2点定时执行CodeQL分析 - 设置.NET 8.0.x运行时环境支持 - 启用C#语言自动构建模式进行代码扫描
- 移除自定义测试架构类,改用现有的 SyncTestArchitecture - 将 RegisterCqrsHandlersFromAssembly 测试方法中的架构创建逻辑提取为统一方法 - 更新重复程序集注册去重测试,验证不同 Assembly 实例但相同程序集键的情况 - 简化测试架构初始化逻辑,使用 AddPostRegistrationHook 替代自定义配置 - 调整注释文档以反映新的测试架构创建方式 - 移除 GitHub 工作流中对 main 分支的限制条件
Fixed 1 file(s) based on 1 unresolved review comment. Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
- 将基础提交哈希从 github.event.before 更新为 github.event.pull_request.base.sha - 将当前提交哈希从 github.sha 更新为 github.event.pull_request.head.sha - 确保PR工作流正确比较基线和目标分支的差异
…pling-todo-4 feat(core): 扩展 CQRS 处理器注册 API 并完善文档
- 实现ArchitectureContext提供系统、模型、工具等组件访问管理 - 添加CqrsDispatcher作为GFramework自有CQRS运行时分发器 - 集成Microsoft.Extensions.DependencyInjection作为IoC容器适配器 - 实现完整的命令、查询、事件处理机制 - 支持上下文感知处理器注入架构上下文 - 提供管道行为链处理机制 - 实现流式请求处理功能 - 添加服务实例缓存和优先级排序支持
- 实现 MicrosoftDiContainer 类,提供 Microsoft.Extensions.DependencyInjection 的适配器 - 添加 DefaultCqrsHandlerRegistrar 默认 CQRS 处理器注册器实现 - 配置 GitHub Actions CI/CD 工作流,包含代码质量检查和构建测试任务 - 设置 .NET 8/9/10 多版本支持和缓存策略 - 添加单元测试覆盖 IoC 容器的各项功能,包括注册、解析和生命周期管理 - 实现线程安全的读写锁机制保护容器操作 - 支持 CQRS 处理器和管道行为的注册管理
- 在ContainerRegistrationFixtures.cs中添加GFramework.Core.Abstractions.Cqrs命名空间引用 - 在MicrosoftDiContainerTests.cs中添加GFramework.Core.Abstractions.Cqrs命名空间引用 - 统一测试文件中的依赖注入配置 - 确保CQRS相关接口的正确引用路径
- 将 Meziantou.Analyzer 从 2.0.264 版本升级到 3.0.46 版本 - 将 Meziantou.Polyfill 从 1.0.71 版本升级到 1.0.109 版本
- 移除了 GFramework.Cqrs.Tests 项目的 WarningLevel 配置 - 使测试项目遵循默认警告级别设置
- 在GlobalUsings.cs文件中新增System.Reflection的全局引用 - 便于后续代码中直接使用Reflection相关功能 - 减少重复的using声明语句
- 实现MicrosoftDiContainer类作为IIocContainer接口的适配器 - 提供线程安全的依赖注入容器功能 - 支持单例、瞬态、作用域服务注册 - 实现CQRS处理器注册功能 - 添加服务工厂方法注册支持 - 实现按优先级排序的服务获取功能 - 添加完整的单元测试覆盖基本功能和边界情况 - 支持容器冻结和作用域创建功能 - 实现多样性实例注册到多个接口的功能
- 实现MicrosoftDiContainer类,包装IServiceProvider为IIocContainer接口 - 提供线程安全的依赖注入容器功能,支持单例、瞬态、作用域服务注册 - 添加RegisterSingleton、RegisterTransient、RegisterScoped等多种注册方法 - 实现RegisterPlurality方法支持一个实例注册到多个接口类型 - 添加CQRS相关注册功能,包括管道行为和处理器自动注册 - 实现Get、GetAll、GetRequired等服务解析方法 - 添加容器冻结机制,冻结后构建ServiceProvider提供服务解析 - 实现CreateScope方法支持服务作用域创建 - 添加完整的单元测试覆盖各种注册和解析场景 - 实现服务按优先级排序功能支持系统调度需求
…pling-todo-7 Refactor/cqrs architecture decoupling todo 7
- 实现CqrsHandlerRegistrar类,支持扫描并注册CQRS请求/通知/流式处理器 - 添加源码生成注册器优先策略,减少冷启动时的反射开销 - 实现运行时反射扫描回退机制,确保处理器注册的完整性 - 添加CqrsReflectionFallbackAttribute特性,标记需要运行时补充扫描的程序集 - 创建完整的单元测试套件,验证处理器注册顺序与容错行为 - 实现CqrsHandlerRegistryGenerator源码生成器,自动生成处理器注册代码 - 添加详细的日志记录与诊断功能,便于调试注册过程 - 实现类型安全的处理器映射验证与重复注册检测机制
- 实现GFramework自有CQRS运行时分发器,支持请求/通知/流式请求处理 - 添加进程级缓存机制优化反射调用性能,包括请求、通知、流水线调用委托缓存 - 重构CqrsHandlerRegistrar使用ReflectionFallbackMetadata替代字符串类型名 - 引入CqrsReflectionFallbackAttribute支持运行时补充反射扫描的处理器类型 - 添加完整的CQRS处理器注册单元测试,验证有序执行和容错行为 - 修复MicrosoftDiContainer中异常消息的格式化空白问题 - 实现上下文感知处理器的CQRS分发上下文注入功能
- 在 CqrsDispatcher 中添加 Concurrent 包引用以支持线程安全操作 - 在全局引用文件中增加 Concurrent 包引用,统一并发编程支持 - 为后续的并发处理逻辑改进奠定基础架构支持
- 实现 CqrsDispatcher 类,支持请求/通知/流式请求的分发处理 - 添加进程级缓存机制,优化热路径中的反射和类型构造性能 - 实现上下文感知处理器的 CQRS 分发上下文注入功能 - 开发 CqrsHandlerRegistryGenerator 源代码生成器,减少运行时反射扫描 - 添加完整的单元测试验证缓存机制和服务类型注册功能 - 支持管道行为链处理和异步流式请求响应模式
…pling-todo-8 Refactor/Add CQRS dispatcher caching and refactor handler registration
- 实现 CqrsHandlerRegistryGenerator 源代码生成器 - 为 CQRS 请求处理器、通知处理器和流请求处理器生成注册代码 - 减少运行时程序集反射扫描开销 - 支持直接类型引用和反射加载两种注册方式 - 提供完整的单元测试验证生成器功能 - 实现对私有嵌套类型的反射注册支持
- 实现了 CqrsHandlerRegistryGenerator 源代码生成器 - 减少运行时程序集反射扫描成本,提升性能 - 支持 IRequestHandler、INotificationHandler 和 IStreamRequestHandler 接口 - 自动为 CQRS 处理器生成服务注册代码 - 提供精确的运行时类型引用和反射注册功能 - 包含直接引用、数组和泛型类型的支持 - 生成带有日志记录的处理器注册代码
…pling-todo-9 Refactor/Decouple handler registry generator from interface discovery reflection
- 实现了 GFramework 自有 CQRS 运行时分发器,支持请求/通知/流式请求处理 - 添加了多层级缓存机制,包括服务类型缓存、调用委托缓存、按响应类型分层缓存 - 实现了上下文感知处理器的自动注入功能 - 集成了管道行为链处理机制,支持中间件模式的请求处理 - 添加了完整的缓存测试用例,验证各种消息类型的缓存命中与复用逻辑 - 优化了反射调用性能,避免热路径中的重复类型构造与装箱操作
- 修改注册条件判断逻辑,支持多种注册类型的组合处理 - 新增有序注册实现方法,统一处理直接、反射和精确反射注册 - 添加注册类型枚举以区分不同的注册方式 - 实现混合注册场景下的稳定排序机制 - 更新反射注册逻辑以支持更复杂的类型解析 - 优化代码结构提升可读性和维护性 - 添加单元测试验证各种混合注册场景的正确性
- 实现了CqrsHandlerRegistryGenerator源代码生成器 - 为CQRS处理器减少运行时程序集反射扫描开销 - 支持IRequestHandler、INotificationHandler和IStreamRequestHandler接口 - 提供静态类型引用和运行时反射发现的混合注册策略 - 生成服务注册代码并添加调试日志记录功能 - 实现精确的运行时类型引用描述和泛型类型处理
- 实现CqrsHandlerRegistryGenerator源代码生成器 - 减少运行时程序集反射扫描开销 - 支持IRequestHandler、INotificationHandler和IStreamRequestHandler接口 - 生成静态注册代码替代运行时动态发现 - 提供精确的运行时类型引用描述功能 - 实现泛型类型和数组类型的反射处理 - 添加日志记录和错误处理机制 - 支持跨程序集类型引用和内部类型反射查找 - 生成符合IServiceCollection的服务注册代码
- 验证相同消息类型重复分发时不会重复扩张服务类型与调用委托缓存 - 验证 request 调用委托会按响应类型分别缓存避免不同响应类型共用 object 结果桥接 - 实现通过反射读取 dispatcher 静态缓存字典的测试辅助方法 - 添加清空 dispatcher 静态缓存的方法避免跨用例共享进程级状态 - 创建多个测试数据模型和处理器用于验证不同的缓存场景 - 实现异步流消费方法确保建流路径被真实执行
- 创建 MetadataReferenceTestBuilder 工具类用于构建内存元数据引用 - 实现 CreateFromSource 方法将源码编译为内存程序集并返回元数据引用 - 添加 GetRuntimeMetadataReferences 方法获取当前运行时可信平台程序集引用 - 创建 CqrsHandlerRegistryGeneratorTests 测试类验证 CQRS 处理器注册生成器功能 - 添加多种测试用例验证不同场景下的处理器注册行为 - 包含嵌套处理器、隐藏实现、数组类型参数、泛型类型定义等边界情况测试 - 实现混合直接注册和精确重建注册的测试验证 - 添加对外部基类保护类型处理器的支持测试 - 验证生成器优先处理隐藏处理器而不输出遗留回退标记的功能
- 将 Microsoft.CodeAnalysis.CSharp 引用添加到 GlobalUsings.cs - 重新排列引用顺序以符合代码风格规范
…pling-todo-10 Refactor/cqrs architecture decoupling todo 10
- 在 HandlerCandidateAnalysis 结构中新增 RuntimeDiscoveredHandlerInterfaceLogNames 字段 - 为运行时发现的处理器接口创建日志名称收集器并存储显示名称 - 修改构造函数和属性以支持新的日志名称数组字段 - 更新相等性比较逻辑以包含运行时发现接口日志名称的比较 - 在生成的代码中添加注释显示剩余的运行时接口发现目标 - 更新单元测试验证生成的注释内容是否正确包含接口名称
…pling-todo-11 feat(generator): 添加运行时发现处理器接口的日志名称记录功能
Contributor
|
Important Review skippedToo many files! This PR contains 156 files, which is 6 over the limit of 150. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (156)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This was referenced May 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.