你好,我是欧创新。
《DDD实战课》这个专栏已经完结有段时间了,很庆幸啊,依然能收到很多留言,与我交流技术。为认真学习的你点赞,也很感谢你的支持!
为了让你更好地检测自己的学习成果,我特意做了一套期末测试题。题目共有20道,满分为100分,快来检测一下吧!
2020-09-15 11:49:33
是的,你的理解没有问题。定义这么多对象的目的就是为了实现各层的解耦,通过对象转换,保证领域模型逻辑不会受前端或者资源层逻辑的影响。设计的时候要尽量避免对象转换带来的性能损失。
2020-09-16 14:11:13
2020-08-01 10:30:11
非常不错。建议多看几遍,真正理解设计思想和设计流程后,再去落地。
2020-08-06 08:21:01
2020-06-08 15:34:38
你可以参考第18节的实例,找几个项目团队的小伙伴,找一个小的业务领域,从场景分析开始,提取领域对象,找到聚合根,构建聚合,然后划分限界上下文,完成微服务拆分和设计。然后参考加餐代码示例,设计微服务的分层架构代码目录,完成微服务详细设计和开发。大致流程就是这样的。事件风暴的过程你可能比较陌生,多看几遍,理解一下它每一步的主要目标是什么?对你领域建模时有帮助的。
2020-06-24 16:26:50
2020-05-22 09:42:28
祝贺,已经很不错了哈。建议多看几遍,加深理解。
2020-05-22 11:09:59
2023-05-26 17:55:28
2022-10-06 20:18:24
2022-02-20 15:45:46
2021-10-30 14:42:56
2021-08-25 10:51:42
2021-07-02 18:32:16
2021-07-01 20:02:37
2021-07-01 20:01:54
2020-12-07 11:04:08
子域还是偏业务概念的,这个还在DDD的战略设计阶段。我们在子域内开展事件风暴,划分出限界上下文,并根据限界上下文设计出微服务后,微服务才是物理单元的部署。当然有的子域可以划分出多个限界上下,也可能是一个限界上下,如果是一个限界上下文,那它就是部署单元。不同微服务之间的服务访问现在一般都是通过API网关来实现。
2020-12-15 16:23:53
2020-08-01 10:28:52
厉害!
2020-08-06 08:21:25
2020-08-01 10:24:58
1、都可以的,要根据应用层和领域层在业务逻辑处理需要什么样的DO对象,需要什么对象就转换成什么类型的对象。2、在应用层进行跨聚合操作时,如果需要获取其它聚合的对象的数据,需要通过聚合根ID来访问其他聚合,这是其它聚合的聚合根会找到对应对象,然后返回数据,当然这个数据的初始化是通过其它聚合的仓储来完成的。3、这个聚合是其它聚合吗?其它聚合不一定返回聚合根,返回实体和值对象也是可以的,根据你需要的数据来定,也可以临时定义一个对象。4、值对象更多的体现领域模型的概念,它更强调描述和值的属性,在数据模型中一般不建议设计成独立的数据表,除非有基于值对象的查询要求。
2020-08-06 08:32:16
2020-06-30 21:26:10
DDD战术设计主要设计领域对象,做好聚合和服务分层等方面的设计,目前还没有用到您说的这些辅助技术。
2020-07-01 11:15:38
2020-05-28 23:54:09
你说的数据模型是不是指PO?PO与基础层的数据库结构是一一对应的。同时还有领域层DO的领域模型,DO和PO会有映射关系。一般我们暴露给前端的是DTO对象,它是由多个DO组合而成的。
2020-05-29 16:55:40
2020-05-28 08:43:29
同一个微服务内,跨聚合的数据库事务在应用服务中控制就好了,或者采用事件总线的模式,保证不同聚合数据的最终一致性。
2020-05-28 09:31:01
2020-05-25 13:57:52
一般来说业务规则的校验都是在领域层完成的。是否过期的校验属于业务规则校验,这种校验需要聚合内实体数据进行配合,所以应该放在领域层。
2020-05-26 08:56:40
2020-05-22 17:57:40
也还不错呢,多看几遍,理解的会更深刻。近期在准备一本书,等好了再告诉大家哈。
2020-05-23 14:17:36
精选留言
2020-09-15 11:49:33
2020-08-01 10:30:11
2020-06-08 15:34:38
2020-05-22 09:42:28
2023-05-26 17:55:28
2022-10-06 20:18:24
2022-02-20 15:45:46
2021-10-30 14:42:56
2021-08-25 10:51:42
比如我们在分析保险理赔的定核损模块,定损需要从其他厂商(如精友等)导入配件数据,导到保险公司以后又可以根据实际情况对配件的价格进行修改。我们分析将定损单作为一个聚合,那定损配件整体(若干车辆损失换件组成)肯定是跟定损有关的领域对象。现在对这个领域对象是定义成实体,还是值对象这块傻傻分不清,内部也是有些争议。争议点在于,如果定义成值对象,这里导入数据后涉及修改配件数据,而不是做整体替换(系统内也没有针对配件管理相关的功能,都是现导现用);假如定义实体吧,又觉得实体缺少一些行为,只是一些数据。如果这块我描述的清楚的话,还请有时间帮忙指导一下。非常感谢!
2021-07-02 18:32:16
1.根据欧老师得回答,子域属于粗划分,子域一开始可能按照业务流程或者功能模块粗分,如果采用事件风暴以后确定了限界上下文边界,会不会存在之前得模块划分不合理。也就是开始粗分和战术设计推导最终推导出来得不一致。
2.也有相关书籍提到子域和限界上下文是不同视角或者维度得产物,不用强拉他们进行比较,就好比问一个主任医生和一个高级工程师哪个厉害一样,没有对比性,也不用强拉着去比较,不知道这种说法是否成立。
请知道得老师或朋友阐述下自己得观点。
2021-07-01 20:02:37
2021-07-01 20:01:54
2020-12-07 11:04:08
2020-08-01 10:28:52
2020-08-01 10:24:58
老师学完你的课程,我存在如下疑问:
1. dto转化为do时,do是采用聚合根,还是可以是实体、值对象以及其他的对象吗?
2. 如果在应用服务层存在聚合交互时,如果聚合根内部的数据满足其他聚合的要求,难道为了解耦,其他聚合还从仓储层重新获取一遍数据吗?
3. 聚合的领域返回的响应对象, 可以是实体、值对象或聚合根吗,如果存在聚合根,必须是聚合根吗?
4. 值对象可以理解为数据表中没有专属uuid的实体的附加信息表结构吗?
谢谢.
2020-06-30 21:26:10
2020-05-28 23:54:09
2020-05-28 08:43:29
2020-05-25 13:57:52
2020-05-22 17:57:40