玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python资讯 > 正文内容

Dino Esposito CQRS 消息以及事件看法

Dino Esposito on CQRS, Messages and Events

Esposito注意到CRUD系统的一个特征在于数据总是以快照的形式保存起来的,亦即最近的已知系统状态,而这一点往往被人忽略。如果客户提出了某个特性,需要获得应用在过去某个阶段的状态,那么仅仅保存快照数据是无法满足这一需求的。在他看来,这种情况下唯一的解决方案就是重新修改系统的架构,让它保存领域事件,并保存整个领域中所有的变更记录。将数据保存为事件能够降低数据的抽象级别,设计者就有机会将相同的数据用于不同的目的,包括单纯的查询、商业智能以及系统使用情况分析。

Esposito从零六至今一直保持着微软MVP的荣誉,他将CQRS描述为能够区分修改状态的代码与读取状态的代码的一种设计风格。他强调说:一旦认识到命令与查询是两种截然不同的操作,对于软件架构设计的想法就可能带来重大的影响,系统的每个部分都会变得更容易理解与编码。其中命令部分将关注于业务规则,而查询部分则只需要考虑如何返回数据。两者各自的处理管道也能够进行分别优化,而不会产生破坏对方的功能的风险。CQRS的最基本形式是在一个数据库中实现读写分离,但也存在着一些更高级的表现形式,Vladimir Khorikov曾专门撰文讨论过这一话题。

Esposito认为,基于消息的架构的主要优势在于:在支持一些新的用户场景时,它能够简化对复杂性的管理以及业务工作流的变更。他也提到,如果不使用CQRS而打造一个基于消息的系统是非常困难、甚至是不可能的。通过使用领域事件,可以将工作流建模为一个个独立的操作(由命令触发)以及事件。通过创建处理器对命令以及后续的事件进行处理,整个工作流就被分解为多个小步骤,从而简化工作流的变更。

Esposito也表示,许多开发者倾向于仅在具有高度协作性以及大规模的应用中使用CQRS。但在他看来,无论系统表现出怎样的复杂度,这种软件开发方式都能够体现出其价值所在。虽然在具有高度复杂性的业务中,CQRS能够更好地表现出其优势,但他认为即使在一些普通的应用,例如基于CRUD的应用中,CQRS同样也是一种简单而强大的模式。

Dino Esposito在MSDN杂志上所发表的三篇系列文章中表示:命令查询职责分离(CQRS)架构是系统架构变革的一个起点,它将对整个架构带来深远的影响。CQRS是软件架构师的设计理念从“需要持久化的模型”逐渐演变为“需要进行日志记录的事件”的第一步。在他看来,软件架构在今后数年将成为人们的主要关注点,而主要的数据源将来自于基于事件的数据,而不是数据的快照。

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/news/a11205.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年03月23日 - 20时54分25秒 发布自玩蛇网

我要分享到:
尚未注册畅言帐号,请到后台注册

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules