千家信息网

快速理解CQRS

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,CQRS 意味着命令和查询的责任是分离的。很多人错误的认为CQRS是一个整体架构,其实,CQRS这个一个小的模式,这个模式由Greg Young和Udi Dahan首次提出. 他们从Bertrand
千家信息网最后更新 2026年10月31日快速理解CQRS

CQRS 意味着命令和查询的责任是分离的。很多人错误的认为CQRS是一个整体架构,其实,CQRS这个一个小的模式,这个模式由Greg Young和Udi Dahan首次提出. 他们从Bertrand Meyer的《Object Oriented Software Construction》中获取的命令和查询分离模式的灵感。在CQS背后的主要观点是:"一个方法应该改变一个对象的状态,或者返回一个结果,但不是二者兼具。换句话说,问一个问题不应该改变问题的答案,更正式的,一个方法只有被引用透明(referentially transparent)并且没有任何副作用的时候才会有返回一个值。

正因如此,我们把方法划分为两种:

  • Commands - 改变一个对象或整个系统的状态

  • Queries - 在不改变对象的状态的情况下返回结果

在现实中,可以很简单讲清楚什么是什么。Queries会声明返回类型,commands没有返回值. 这种模式是普遍适用的,它会让对象更加简单。换句话讲,CQRS只适用于解决特定问题.


很多应用程序使用主流读和写来构建对象的方法。对于同一个模型(model)用读和写会造成model更加复杂,维护和优化都非常困难。


这两种模式的真正策略是你可以将修改状态和不修改状态的方法分离开,这种分离可能造成在处理性能和调优时变得困难,你可以在写的部分来优化系统中被分开用做读的部分,写的部分是已知的领域,这个领域包含所有的行为,读的部分被指定为报表提供服务。


这种模式在一个很大的应用程序的另外的一个好处是,你可以将开发人员分配到更小的团队中去完成这个系统的不同任务(只完成读或写),而不用关心其他的任务。例如,开发读部分的人员不需要明白领域模型。




查看原文:Kanasz Robert

模式 对象 方法 状态 部分 系统 问题 领域 困难 人员 任务 命令 应用程序 模型 程序 结果 应用 开发 查询 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 互联网科技工作委员会主任 涨乐互联网科技 互联网最新的科技有限公司 宜安科技 互联网金融 腾讯科技 互联网女皇 伴你行互联网科技有限公司 成都仁贤领冠互联网科技有限公司 富国互联网科技创新基金 中国航天科技大学国际工业互联网 互联网科技与大数据专业 银川新华互联网科技学校联系电话 想开互联网科技公司怎么样 明优互联网科技有限公司 世界互联网领先科技成果获奖 中和天地互联网科技有限公司 富国互联网金融科技混合基金 世界互联网科技成果奖 万物互联网智能科技 陕西九四连强互联网科技有限公司 互联网科技图片 广州互联网科技公司 奇酷互联网络科技 互联网科技创新企业排名 健康食品互联网创新科技园项目 威龙国际互联网科技公司 互联网数据科技专业 上海京穆互联网科技有限公司 版纳互联网科技选哪家 求路客互联网科技电话
0