• 子衿
    2023-02-11 来自上海
    2. 已经实战过,困难一:目前案例中,都是应用服务和聚合下的领域服务,一一对应,比如EmpService中,只会调用EmpHandler,不会调用OrgHandler,如果一个应用服务下,既需要聚合A的领域服务的功能,又需要聚合B下的领域服务的功能,那么是应该新应用服务中组合A领域服务和B领域服务,还是新应用服务下组合A应用服务和B应用服务,如果应用服务EmpService下想使用Org中的服务,那么是组合OrgHandler还是OrgService,困难二:如果领域服务OrgHandler中想使用EmpHandler的功能,可以直接在OrgHandler中组合EmpHandler么,困难三:下层肯定是不能依赖上层,但同层间是否可以互相依赖,这会不会产生什么问题,最佳实践是什么样的

    作者回复: 困难一:两种用法都有,关键还是分清什么逻辑应该放在应用层,什么逻辑应该放在领域层。这个问题分清了,答案自然就有了。一句话:要和不懂开发的业务人员讨论的逻辑,就是领域逻辑,放在领域层;否则放在应用层。 困难二:可以。 困难三:从松耦合的角度,尽量不互相依赖,但是原则上没有不让依赖的限制,实在要依赖的话也可以。

    共 4 条评论
    6
  • 子衿
    2023-02-11 来自上海
    再补充几点:一:DDD中涉及到反腐层,反腐层的最佳实践是什么样的,在领域层定义一个接口,适配器层对其实现,然后在实现中发起远程调用访问外部,但如果领域层这个接口中,也要有领域逻辑呢,是退化成抽象类吗 二:不同模块下的类互相调用,和同一模块不同包下的类互相调用,应该怎么处理,方案是一致的吗,应用服务层的服务间互相调用和领域服务层的服务间互相调用,逻辑是一样的吗,同一个包下多个领域服务间互相调用,和不同包下多个领域服务间互相调用,逻辑是一样的吗

    作者回复: 一:抽象类是一种可行的方法,这是“继承”的思路;另一种是“组合”的思路,也就是有一个仅仅用于远程访问的接口,它的实现在适配器,把您说的领域逻辑放在另一个单独的领域服务,这个领域服务调用刚才的远程访问接口。一般来说,组合优于继承。 二:模块就是包的另一种说法,不太理解您说的“模块下的包”是什么意思。另外,您问了几个“逻辑是一样的吗?”,这里不知您说的“一样”具体是什么含义,所以无法回答。最好还是拿实际例子来谈。

    共 2 条评论
    3
  • kkxue
    2023-02-13 来自广东
    老师,为什么你司CTO徐昊说CQRS是邪教呢?哈哈。

    作者回复: 这。。。您最好问他

    共 3 条评论
    2
  • 神经蛙
    2023-03-03 来自广东
    想问下子域里面的通用域是指什么?为什么书中说通用域不可以被复用?那他为什么叫通用域呢?能举个实际例子讲讲核心域 支撑域 通用域吗 主要是通用域

    作者回复: “通用”指的是概念上的通用。“复用”指的是代码上的复用。不在同一个层面。通用域的例子,书里举了组织结构图和会计,另外,我认为工作流引擎也算。

    
    
  •  
    2023-02-12 来自广东
    请问一下文档里绘图的工具是什么?打算在工作中试用下ddd,但是找不到好的画图工具

    编辑回复: draw.io

    共 2 条评论
    
  • aoe
    2023-02-27 来自浙江
    「限界上下文是化解大型系统的利器,也是架构设计的基础」 这个基础知识我才知道,离架构设计近了一步
    
    