用途:该技能围绕 CQRS(Command Query Responsibility Segregation,命令查询职责分离)模式提供专家协助,核心是把数据存储的读操作与写操作分离,分别使用命令模型(写)与查询模型(读),而非单一模型兼顾两者。
主要能力:覆盖命令处理器、读投影、事件反规范化与非对称扩展。命令代表改变状态的意图(返回 void 或 ID),查询请求数据且无副作用。命令处理器在提交写入前校验权限与业务不变量;物化读投影响应领域事件,更新为查询优化的反规范化视图(如 Elasticsearch、Redis、文档数据库、只读副本)。
适用场景:读写负载不对称(读远多于写,需独立水平扩展);跨多个聚合的复杂报表与搜索视图;协作与高并发场景;与事件溯源配合,将状态变化捕获为事件并异步投影读模型。
使用方式:资料给出快速开始示例,包含命令侧(CreateOrderCommand、OrderAggregate)与查询侧(GetOrderSummaryQuery、OrderSummaryProjector),以及 CancelOrderCommandHandler、OrderDashboardProjection、OrderReadModelProjector 等代码片段,展示命令处理与事件投影的写法。
最佳实践:查询完全无副作用;接受最终一致性并为投影延迟设计乐观 UI;按前端视图优化读模型;使用专用只读副本或快速键值缓存保护写主库。避免全局套用 CQRS(简单 CRUD 用标准 MVC 即可);命令与查询管道不共享实体;读投影不写回写存储,保持数据管道单向。
限制与排错:可能出现陈旧数据(命令执行与查询更新之间的延迟,需 UI 处理并检查投影滞后)与复杂度(过度设计,若领域不需要分离则退回简单 CRUD)。参考资料为 MSDN CQRS Guide 与 Greg Young 的 CQRS Documents。具体安装命令、收费与平台信息暂未提供。