Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于领域划分的疑问 #15

Open
zevingao opened this issue Jul 23, 2020 · 11 comments
Open

关于领域划分的疑问 #15

zevingao opened this issue Jul 23, 2020 · 11 comments

Comments

@zevingao
Copy link

疑问:
1、示例中把多个领域的代码放到了一个domain下,为什么不拆分成多个domain呢?
例如 domain/user domain/order domain/goods,每个domain只暴露service给controller调用
2、放在一个domain下当拆分成微服务时候是不是很麻烦呢?
3、聚合服务该怎么分层呢?比如下单操作同时依赖用户服务、商品服务、库存服务和订单服务等,这个服务要单独拆出来吗?还是直接写在订单服务里面?这样是不是就依赖了其他服务了?还是说调用其他服务的api方式来解决呢?

望解惑,谢谢。

@8treenet
Copy link
Owner

1。 fshop的篇幅有限,以单体的面貌容易讲解。
2。domian里全是对象了,理论上可以不拆子包了。因为本身就不是 package.func
3。看下聚合根工厂、聚合根、实体的关系处理

@8treenet
Copy link
Owner

如果服务是单独拆出来的。
repository无非就是把从以前mysql的读写改成http的读写。
repository本身的价值就体现了。

@zevingao
Copy link
Author

1。 fshop的篇幅有限,以单体的面貌容易讲解。
2。domian里全是对象了,理论上可以不拆子包了。因为本身就不是 package.func
3。看下聚合根工厂、聚合根、实体的关系处理

关于第3个问题,看了您的文章还是不太明白。可以直接告诉我该怎么处理吗?谢谢。

@8treenet
Copy link
Owner

那就假有用户服务的概念,微服务组成。
下订单 涉及到实体,有用户实体、订单实体、商品实体。这些实体都是Repository来创建的。
那么这个下订单聚合了多个实体,它就叫做聚合根。这样说的简单吧。

那么要创建一个下订单的聚合根,就有工厂去创建,它通过Repository来加载聚合根里的各种实体。

本质上你想问的就是 用户的实体现在是读数据库出来的,Repository屏蔽了数据细节。完全可以改成http

@zevingao
Copy link
Author

zevingao commented Jul 23, 2020

那就假有用户服务的概念,微服务组成。
下订单 涉及到实体,有用户实体、订单实体、商品实体。这些实体都是Repository来创建的。
那么这个下订单聚合了多个实体,它就叫做聚合根。这样说的简单吧。

那么要创建一个下订单的聚合根,就有工厂去创建,它通过Repository来加载聚合根里的各种实体。

本质上你想问的就是 用户的实体现在是读数据库出来的,Repository屏蔽了数据细节。完全可以改成http

好的大概明白了,就是单独出来一个订单聚合根这样一个服务层,让它依赖其他几个服务,这些服务可以是数据库查询也可以是api查询。非常感谢。

@8treenet
Copy link
Owner

大体对上了,
但订单聚合根其实不是一个层。不能用分层概念去看它。订单聚合根是派生自订单实体,并且组合了其他实体。它是有订单状态,订单行为的聚合对象。

分层害死人啊。

@zevingao
Copy link
Author

哈哈,好的,多谢解惑

@knight0zh
Copy link

大体对上了,
但订单聚合根其实不是一个层。不能用分层概念去看它。订单聚合根是派生自订单实体,并且组合了其他实体。它是有订单状态,订单行为的聚合对象。

分层害死人啊。

你好,想请问下,为什么说分层害死人,我是ddd初学者。希望能帮我解惑一下。

@Xuwudong
Copy link

你好,关于聚合根我有个疑问,聚合根应该也是个实体吧,有全局唯一标识以及独立的生命周期,但是示例中的大多数聚合根感觉本质是一个行为,然后包含一个实现这个行为的方法,比如 OrderPayCmd 支付订单聚合根,我想这里聚合根是不是分的太细了,能解释下吗,谢谢。

@8treenet
Copy link
Owner

8treenet commented Aug 25, 2021 via email

@ericzhao007
Copy link

我理解,目前跨域的操作都放在聚合根下,那应用层实际上就不处理多域之间的交互了嘛

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants