Gabriel Schenker 表示,由于没有使用 命令与查询职责分离 (CQRS)架构,因此当今的应用程序普遍地体现出不必要的复杂性或低效性,他 相信 ,在基于复杂的 业务线 (LOB)应用程序的上下文中,CQRS将成为最具实用性的架构模式之一。
Schenker认为,导致应用程序产生如此复杂性的原因之一在于对贫血领域模型的大量使用,组成这种模型的实体只包含数据,由与之分离的服务负责处理逻辑。另一个原因在于对数据进行读取与变更时使用了相同的接口。在Schenker看来,缺乏读写分离性是真正的问题所在,正确的方式是将数据的查询视为一种完全不同的关注点。他对于保持读写分离的观点是基于以下原因产生的:
为了描述CQRS的基本原则,Schenker创建了 一个精简的,但来自于真实世界需求的示例 购物网站,其中包括一个产品目录和一个购物车功能。
Vladimir Khorikov 定义了 三种类型的CQRS ,并且与不使用CQRS(No CQRS)的架构方式进行了对比:
Khorikov强调,CQRS不是一种二元性的选择,分离的程度可以由应用的需求所决定,以实现在分离程度与所导致的复杂性之间的一种平衡。并且只有在对读取操作的可伸缩性方面具有较高要求的情况下才应当引入这一架构。
查看英文原文: Advantages of CQRS