CQRS之旅——旅程2(分解领域)】的更多相关文章

旅程2:分解领域 设计停靠站点 "没有石头就没有拱门" --马可波罗 在本章中,我们将对Contoso会议管理系统进行一个高层次的概述.这将帮助您理解应用程序的结构.集成点以及应用程序的各个部分之间的关系. 在这里,我们借用Eric Evans在他的书<领域驱动设计 软件核心复杂性应对之道(Addison-Wesley Professional, 2003)中描述的领域驱动设计(DDD)方法来描述这个高级结构.DDD是成功实现CQRS模式的先决条件虽然还没有达成普遍的共识,但我们…
旅程1:我们的领域:Contoso会议管理系统 起点:我们从哪里来,我们带来了什么,谁将与我们同行?" 只要前进,我愿意去任何地方." --大卫•利文斯通 本章介绍了一个虚构的公司Contoso.它描述了Contoso计划推出的会议管理系统,这是一个新的在线服务,可以使其他公司或个人通过此系统组织和管理自己的会议和活动.本章从高层次描述了新系统的一些功能和非功能需求,以及为什么Contoso希望使用CQRS和Event Sourcing实现部分功能.与任何考虑此过程的公司一样,有许多问…
旅程3:订单和注册限界上下文 CQRS之旅的第一站 "寓言家和鳄鱼是一样的,只是名字不同" --约翰·劳森 描述: 订单和注册上下文有一部分职责在会议预订的过程中,在此上下文中,一个人(注册者)可以购买特定会议的座位.还可以为已购买的座位分配与会者的名称(这在第5章"准备发布V1版本"中进行了描述). 这是我们CQRS旅程的第一站,因此团队决定实现一个核心的.但自包含的系统部分--订单和注册.对与会者来说,注册过程必须尽可能地轻松.该流程必须确保业务客户能够预订到尽…
旅程5:准备发布V1版本 添加功能和重构,为V1版本发布做准备. "大多数人在完成一件事之后,就像留声机的唱片一样,一遍又一遍地使用它,直到它破碎,忘记了过去是用来创造更多未来的东西." -- 弗雷娅.斯塔克 发布Contoso会议管理系统V1版本: 本章描述了团队为准备Contoso会议管理系统的第一个产品版本所做的更改.这项工作包括对前两章介绍的订单(Order)和注册(Registrations)限界上下文的一些重构和功能添加,以及一个新的会议管理(Conference Mana…
旅程4:扩展和增强订单和注册限界上下文 进一步探索订单和注册的有界上下文. "我明白,如果一个人想看些新鲜的东西,旅行并不是没有意义的."儒勒·凡尔纳,环游世界80天 对限界上下文的更改: 前一章详细描述了订单和注册限界上下文.本章描述了在CQRS之旅的第二阶段,团队在这个限界上下文中所做的一些更改. 本章的主题包括: 改进RegistrationProcessManager类中消息相关的工作方式.这说明了限界上下文中的聚合实例如何以复杂的方式进行交互. 实现一个记录定位器,使注册者能…
旅程8:后记:经验教训 我们的地图有多好?我们走了多远?我们学到了什么?我们迷路了吗? "这片土地可能对那些愿意冒险的人有益."亨利.哈德逊 这一章总结了我们旅程中的发现.它强调了我们在这个过程中所学到的最重要的经验教训,提出了如果我们用新知识开始这段旅程,我们将以不同的方式做的一些事情,并指出了Contoso会议管理系统的一些未来道路. 你应该记住,这个总结反映的是我们的具体旅程,并非所有这些发现都适用于你自己的CQRS旅行.例如,我们的目标之一是探索如何在部署到Microsoft…
旅程6:我们系统的版本管理 准备下一站:升级和迁移 "变化是生活的调味品."威廉·考珀 此阶段的最高目标是了解如何升级包含实现CQRS模式和事件源的限界上下文的系统.团队在这一阶段实现的用户场景包括对代码的更改和对数据的更改:更改了一些现有的数据模式并添加了新的数据模式.除了升级系统和迁移数据外,团队还计划在没有停机时间的情况下进行升级和迁移,以便在Microsoft Azure中运行实时系统. 本章的工作术语定义: 本章使用了一些术语,我们将在下面进行描述.有关更多细节和可能的替代定…
旅程7:增加弹性和优化性能 到达旅程的终点:最后的任务. "你不能飞的像一只长着鹪鹩翅膀的老鹰那样."亨利·哈德逊 我们旅程的最后阶段的三个主要目标是使系统对故障更具弹性,提高UI的响应能力,并确保我们的设计是可伸缩的.加强系统的工作主要集中在订单和注册限界上下文中的RegistrationProcessManager类.性能改进工作的重点是当订单创建时UI与领域域模型的交互方式. 本章的工作术语定义: 本章使用了一些术语,我们将在下面进行描述.有关更多细节和可能的替代定义,请参阅参考…
探索CQRS和Event Sourcing 本项目聚焦在使用命令和查询分离模式和事件溯源(CQRS+Event Sourcing)构建一个具有高扩展,高可用和高维护性的应用程序. 本项目定位为一个学习之旅.这份指南旨在帮助您开始了解CQRS和Event Sourcing模式,它并没有打算成为此模式的最终指南,相反,这只是一本杂谈,它讲述了一个此前没有CQRS经验的开发团队是怎样构建,部署(到Microsoft Azure)和维护一个实际的复杂企业系统作为参考实现(Reference Implem…
引言 领域驱动设计(Domain Driven Design),使用统一的建模语言.专注业务领域分析.采取化整为零并反复迭代的方式,以业务领域模型为圆心,向外辐射到系统轮廓的勾勒.具体模块的实现,为我们展现了一种表达更为自然.沟通更为顺畅的面向对象软件分析与设计方法. 在应用DDD的实践中,它与测试驱动开发(Test Driven Development).行为驱动开发(Behaviour Driven Development).敏捷软件开发(Agile Software Development…