2022-09-07 11:26:36
缺乏项目现场的业务上下文背景,需求文档只能抽象地表达一种通用业务要求,这种通用性其实忽视了很多特殊上下文,从而让软件系统变得像演示Demo系统一样简单。
2022-09-20 19:16:29
DDD 的特点主要是定位于解决复杂性
2022-09-20 19:26:33
解决复杂性的两种方法是:拆解成松耦合的组件 + 使用容易让人明白的套路表达出来。
2022-09-21 19:12:59
业务流程为了实现业务规则,因此可以通过业务流程去发现业务规则。
2022-09-22 11:41:55
传统的CRUD系统不适合使用DDD。
2022-09-22 11:47:53
领域驱动设计共有两个部分:战略设计和战术设计。战略设计也可理解为策略设计,是从宏观角度着眼于领域的分析设计,属于系统分析阶段,注重如何从有界上下文中寻找领域模型,战略模式由有界上下文、无所不在的语言和上下文映射组成
2022-09-22 11:47:56
战术设计属于设计代码阶段,使用聚合、实体、值对象等对象类型概念表达领域模型。
2022-09-22 11:49:44
有界上下文是指在空间或时间上有边界的一段环境背景,它确定了每个模型的适用范围,模型体现了这个范围内的逻辑一致性。
2022-09-22 17:58:58
事件风暴( Event Storming)是一种用于快速探索复杂业务领域的研讨会格式, EventStorming.com的创始人Ziobrando认为它有以下特点。
1)功能强大:能够在数小时而不是数周内提出完整业务流程的综合模型。
2)很有吸引力:整个想法是将提出问题并将知道答案的人带到同一个房间,并共同建立一个模型。
3)它是有效的:得到的模型完全符合DDD实现风格,并允许快速判别状况和聚合边界。
4)容易:符号非常简单。没有复杂的UML,UML可能会导致参与者在讨论核心时由于各自理解不同而讨论中断。
5)有趣:能愉快地领导研讨会,人们充满活力,提供的服务超出了他们的预期。
2022-09-23 11:49:52
将有界上下文与产品和角色联系起来,能够从一个更高的高度也就是从业务知识层次去划分团队,提高团队生产效率。其优点总结如下。
1)在平台中思考可以更好地拆分业务。
2)将产品链接到角色和有界上下文,可以使边界明确。
3)事件溯源和事件驱动的体系结构对于构建分布式和可用平台至关重要。
4)团队不应共享代码,而应共享一个公共业务平台,即中台。
2022-09-23 17:16:00
每个人都说话是不是很混乱?求同存异,将相同的语言模型放在同一个有界上下文中,差异就使用不同的有界上下文来表示。
2022-09-23 19:34:26
业务逻辑的一致性需要从两个方面去保证:业务数据和业务行为。
2022-09-23 19:35:19
聚合是体现逻辑一致性的地方,也是保证业务规则实现的地方。
2022-09-26 11:20:40
聚合代表着逻辑不变性,代表约束的不变
2022-09-26 11:21:47
聚合的设计有以下五种方式。
1)更换主谓宾语句顺序。
2)根据领域事件。
3)通过职责行为。
4)通过事务边界。
5)按时间边界。
2022-09-26 11:34:36
用户是表达者,软件是服务者,表达者驱动软件为之服务,服务者隐藏了具体实现细节。
2022-09-26 11:46:55
哪些对象应该放入聚合?首先,组成部件必须放入聚合,因为没有这些部件,整体就不存在,它们与整体共存亡;其次,还可以根据逻辑的不变性约束来判断,主要是从职责行为这个角度,包括对命令和事件的分析。聚合是接受命令、处理命令和输出事件的地方,唯一不变的是其内部业务逻辑规则,这些规则对输入命令进行了相应的处理,其中带有状态判断或if-else的业务逻辑需要仔细处理,不要将这种切换可变状态的代码散落在各处,而应集中起来,因为可变状态是危险的,与函数式编程的不变性原理相抵触。
2022-09-26 17:33:52
领域服务的第一个特征是:其中的行为是无法放入实体和值对象的行为,或者涉及多个实体与值对象的行为。
2022-09-26 17:34:05
领域服务的第二个特征是:领域服务接口是根据领域模型的其他元素定义的。也就是说,领域服务接口中的一些动作行为,它们的输入输出参数中并没有涉及实体和值对象的元素,要涉及实体和值对象,关键是先有实体和值对象存在。
2022-09-26 17:34:16
领域服务的第三个特征是:操作必须是无状态的。
2022-09-30 15:43:29
清洁(Clean)架构是著名软件工程大师Robert C.Martin提出的一种架构整洁清晰之道,也是当前各种语言开发的目标架构。干净、清晰、整洁的架构应该只包含单向的依赖关系,这样才可以在逻辑上形成一种向上的抽象系统
2022-09-30 15:43:45
越深入代表软件层次越高。外圆是战术实现机制,内圆是战略核心策略。
2022-10-08 11:04:25
本质上Saga就是一种补偿模式。
2022-10-08 11:11:20
使用消息系统实现事件指令发送,也要注意前后顺序,不能将后面发送的事件放在前面送达。区块链是通过链式数据结构来保证这一点
2022-10-08 11:19:40
系统记录的是事件,而不是状态,但是事件的发现有赖于状态的发现
网友评论