第2周
2020年01月19日 - 2020年01月26日
编辑|子鱼
#问答与讨论
1.请问clean architecture在实践中分层中工程结构上的命名你们是按照什么方式弄的,比如 Presentation —>UseCases—>Entities?或者是ApplicationCore—Infrastructure….?
[吴林峰]
DDD屠龙刀 [2019-01-26]
➤ 问题解答
[程析智能-ElderJames] core application infrastructure
[吴林峰] 咋不按use cases 、entities这样去弄呢,这样跟图更接近些
2.想問spring cloud stream和spring cloud bus差別,打算實現event bus,兩個好像都可以,但弄不明白
[Kevin]
DDD屠龙刀 [2019-01-26]
➤ 问题解答
[Simon] 感觉是一个是流式(响应式)编程,一个是事件总线。你要实现 event bus,似应该看 bus
[Kevin] cloud bus也是靠 cloud stream實現的,我看一下流式編程,guava in memory,我找到對比實現的範例了,這樣差異就清楚了
3.这Application 层 和 网关层(比如 controller) 感觉有好多相似的职责,比如安全、数据转换, 关于这方面,大家是怎么考虑的呢?
[熊瑞]
DDD屠龙刀 [2019-01-19]
➤ 问题解答
[阿斌哥] DDD里面的网关层,如Controller,即北向网关,只会用来对协议进行转换,不管原始协议是什么,HTTP,TCP,消息啥的,经过了网关层,最终都要转成应用服务所能认识的协议,即应用服务的入参。
[熊瑞] 嗯 ,这个入参,再在 应用层 翻译给 领域层,对吧。
[Jerry] 在接入层和应用层我都有翻译
[熊瑞] 会不会难以理解 增加复杂度,你怎么做的?
[阿斌哥] 在应用服务所做的基本就是将具体的业务逻辑委派给领域对象(如实体,或者是领域服务),那么首先需要拿到实体,一般来说要么是通过Repository获取到该实体,要么是通过Factory创建该实体,一但创建或者修改了实体的状态,最后还需要通过Repository将实体add或者update一下
[Jerry] 现在情况看来还好,没有难以理解,统一的对象转换器,dto2do do2dto
[阿斌哥] 创建实体的时候是否需要使用Factory也是需要权衡的,一般来说如果实体的创建逻辑比较复杂我一般会选择通过单独的工厂类来创建,如果是简单的实体,一般就在该实体类的内部通过良好命名的能体现创建意图的静态方法创建,如果实在是太简单,直接new也未尝不可。
4.请问你们各种领域模型是如何定义的,例如应用层是否只允许DO和AO存在,如果DTO进来是否需要提前在User Interface层进行转换的?
[刘杰]
DDD屠龙刀 [2019-01-19]
➤ 问题解答
[阿斌哥] AO是啥?
[花雾] 估计是application object,哈哈
[刘杰] 是的
[阿斌哥] “设计概念的统一语言”这一章可以先看一下
5.看了第72课吗? 培训案例重新聚合设计后,会带来什么影响呢?一直在思考,不太清晰
[花雾]
DDD屠龙刀 [2019-01-19]
➤ 问题解答
[差不多先生] 啊哈哈 我觉得倒过来看 豁然开朗
[张智高] 对哦,应该倒过来看
[差不多先生] 我是先把前面的基础概念看一遍,然后跳到最后看案例,然后再看中间,看看设计思路和注意事项