作者回复: 其实DDD的核心思想是在于划分领域边界从而来解耦。我认为领域模型才是DDD在微服务设计的关键,只有构建了边界清晰的领域模型的边界,才有可能设计出高质量的微服务。在建立领域模型后,微服务内部可以用DDD战术设计方法,传统的开发方法也不是不可以,有时候在性能方面表现更优秀。
后面我有一节专门讲解这些对象之间是如何协作的,另外也有一讲来介绍DDD的代码目录结构和模型。
作者回复: 比喻很形象!
作者回复: DDD用于微服务设计的关键就是先建立领域模型,有了边界清晰的领域模型,才能设计出高质量的微服务。在微服务设计时不能脱离领域模型来谈微服务。它们两者之间是必不可少的前后贯通的关系,可能开发人员只关心用DDD来做微服务的开发,并不关心领域建模。领域建模就是DDD的战略实战。而且这种战略设计和分析过程比战术设计更重要。
作者回复: 这一节信息量比较大,后面小的案例里有介绍。
作者回复: 聚合根内会定义引用的实体,在聚合根内部直接使用引用的实体属性或者方法就可以了。
这些实体的方法会被封装成领域服务或者应用服务。外界不需要关心这些实体内的属性或者方法实现了。
作者回复: 这一节的内容有点多,没有做过细的分析,你可以看下一节哈。第12节有详细的领域建模分析过程。
作者回复: 按照中台建设的思路当然需要放在整个企业来考虑复用的。你们这几类产品可以根据领域模型,找出领域模型中的共同的聚合,求同存异,来设计可复用的领域模型。
作者回复: 中台和平台的差异建议再看一下第九节。
作者回复: 后续的变更可以以表格为基础来进行,一个微服务一个表格。服务和实体级的变动在一个表格内演进就可以了。如果涉及到不同微服务的聚合重组,在不同微服务表格之间变动就可以了。小的业务变动不需要重新来做事件风暴,重新设计图。
作者回复: 从复用的角度来看,目标是一致的,都是将公共的能力沉淀,然后复用。
作者回复: 前面主要是基础知识,后面会有一些代码方面的示例。到服务和方法级。
作者回复: 是的,要根据企业情况具体分析。
作者回复: 是的。通用的话,企业内能被很多地方复用也算。
作者回复: 是这样的。
作者回复: 理解正确。
作者回复: 命令是一种业务操作或行为,通常会被设计成应用服务或者领域服务,在没有确定是哪种服务之前,统一用命令来表示。实体的方法都在自己的类里面来实现,然后通过聚合根引用来调用。聚合根是一种特殊的实体,它的方法你可以在它的实体内来实现,然后放在领域服务类里面来封装,也可以直接放在领域服务类里来实现。一个领域服务可以是一个类,也可以一个聚合内所有的领域服务放在一个领域服务类里。你可以根据自己的场景来设计,要尽量避免一个类里面的代码过多。
作者回复: 不是的哦。中台是从业务能力复用的角度考虑的。也就是说将可复用的业务能力做成中台。而微服务只是一种架构,业务变成应用的一种架构方式。
作者回复: 在12节的领域建模里有详细说明。