《领域驱动设计精粹》的作者Vaughn Vernon同样也是《实现领域驱动设计》的作者。书中精炼的概括了《DDD》中的核心概念,实现DDD时技术上的一些技巧和准则和实践DDD中进行业务分析的事件风暴方法。通过本书,你可以快速的对DDD的理论和实践有一个比较全面的了解,而不是像读《领域驱动设计》和《实现领域驱动设计》时,会很容易的陷入细节,并需要花较多的时间去理解书中众多的概念。
书中首先介绍了DDD主要关注的是如何在明确的限界上下文中创建通用语言的建模方法。在限界上下文的边界中,每个模型都有特定清晰的含义并处理特定的事务。在通过DDD进行业务分析时,会有很多的限界上下文,也存在不同子域,通常情况下,一个限界上下文对应着一个子域,在整个业务中,子域又分为核心域、支撑域和通用域。子域是整个业务逻辑的一部分,它代表一个单一的,有逻辑的领域模型。大多数业务领域都过于庞杂和复杂,我们一般只关心在单个项目中的子域,它帮助我们逻辑的拆分整个业务领域,帮助我们理解和分析复杂业务中的问题空间。
关于上下文映射,也就是上下文之间的关系,常见的分为如下几种:客户供应商关系(上游的供应商主导满足客户的需求),跟随者(上游完全主导),防腐层,开放主机服务,已发布语言。在上下文的集成中,也提到了增强实践和反向查询的方法。
在战术设计方面,首先介绍了聚合的核心概念,在定义聚合时,要遵循聚合尽量小,同时需要数据保持高度一致的实体需要放在同一个聚合中,也就是说聚合中的操作需要保持实时一致性,通过标识符引用其它聚合,聚合之间可以通过最终一致性来进行相互的更新。聚合复杂对事件进行相应,并对实体进行更新,在这一原则上,建议保存领域事件在存储中,并在此基础上可以利用IDDD中提到的事件溯源方法。
最后,本书提到了实践DDD时使用的事件风暴方法,在《事件风暴建模101》中有对它的介绍。同时简要介绍了基于DDD建模方法的项目在交付中的一些有用的实践,比如按照事件,命令,聚合的方式对需求进行分类和更准确评估。同时通过《实例化需求》,《影响力地图》和《用户故事地图》的方式去验证核心域中的基于统一语言的模型是否能很好的满足业务的需求。
读完《领域驱动设计精粹》,将之前的零碎的关于DDD学习的相关知识点做了一个梳理,重新审视了一些概念的定义和它们之间的关系,对这些概念有了更准确和深入的了解。同时,也认识到在战术设计层面,对IDDD中提到的一些战术方法,比如Event Sourcing等,还需要更深入的了解和学习。
网友评论