一、说明
本来这个总结应该是最后一篇的,但基于以下两个公司的实际情况,打算先进行一下总结,并且开启asp.net core实战课程:
- DDD说到底还是一个设计方法体系,目前大部分人在实际工作是使用不到的,所以先在这里总结的时候,把整个过程和相关术语整理出来,让大家有一个基本的概念即可,以后在实际工作中需要时再来补充培训
- 现在新项目是使用asp.net core进行开发的,并且目前还有部分同事是从pb转到.net开发的,所以打算先进行asp.net core的实战课程培训。
- 由于目前大部分项目还是.net framework的asp.net mvc实现的,所以在实战的时候,同时也会讲在asp.net mvc的实现与.net core中的区别
二、问题空间
1、领域/子领域
前面讲过DDD是用来解决复杂业务问题的,所以首先需要对业务问题有一个清晰的认识,一般业务领域的需求称为问题空间,下面以捷信达的旅游健康管理系统进行分析。
三、解空间
1、限界上下文
为了实现业务流程,需要由各个具有业务价值的场景配合,而具有业务价值的场景则称为限界上下文。
2、限界上下文映射
3、聚合根/聚合/值对象
- 聚合根
- 也是一种聚合
- 要维护其聚合下的所有其他聚合和值对象的业务完整性
- 比如客账主单是聚合的同时,也是聚合根
- 客账主单需要保障客账明细的完整性
- 外界只能通过客账主单才能访问到客账明细
- 聚合
- 根据id来判断两个对象是否相同,即使值相同,但id不同也会认为是不同的聚合
- 要跟踪聚合的生命期
- 比如客账明细,即使两条客账明细的发生时间,消费项目,数量,金额等相同,但这两条客账明细仍然是不同的明细
- 值对象
- 根据值来判断两个对象是否相同
- 比如城市,深圳,无论在哪个聚合下面,只要城市=深圳则认为是同一个深圳
四、实现
1、限界上下文实现架构
2、repository仓储
仓储注意事项: