【发布时间】:2017-09-25 15:00:04
【问题描述】:
我正在将一个应用程序重构为 DDD,到目前为止一切都很好,但我对某些责任以及解决它的最佳方法是什么感到怀疑。
该应用程序是呼叫中心代理使用的 Web 应用程序,具有 CRM 功能,后端是 REST API。
用例如下:代理打电话给客户,需要收集一些信息/提供促销等。 在打电话给客户并与他交谈后,他需要为这次联系尝试填写一些信息,其中一些信息是组合框,其中包含从数据库中填充的数据,并且它将带有实体 ID 的 POST 发送到端点以进行注册它。
所以我们有一个端点contactAttempt,它接收数据、customerId、agentId、一些组合框信息(subjectId、reasonId、extraInfo1、extraInfo2),额外信息不调用它,只是为了简化。
该信息被反序列化为传递给应用程序服务的 DTO 对象,应用程序服务咨询相应的存储库以检查 id 是否有效并返回实体,如果未找到实体,则引发控制器异常捕捉并用消息回复客户。
如果所有实体都有效,则有一些域规则,例如是否是与客户的第一次联系、是否发送欢迎电子邮件等。
我的疑问是从存储库中获取实体的这个步骤,它应该是这样的,或者我应该在控制器中获取它,如果我需要的所有东西都存在,那么我只使用逻辑传递给域服务需要应用业务规则吗?
- 上述方法的优缺点是什么?
- 还有其他方法吗?
- 在 MVC 的上下文中,Controller 的职责是什么?
【问题讨论】:
-
Mvc 与 DDD 不兼容。
-
另外,您指的是哪种服务?域服务?
-
关于mvc,好吧,只考虑一个将接收请求的控制器,我说的是从db、控制器、应用服务或域服务中获取实体的逻辑放在哪里
-
@ConstantinGalbenu 为什么 DDD 与 DDD 不兼容?这对我来说听起来很奇怪......
-
@rascio 这个想法是 mvc 更适合表示层而不是域层。还有其他架构可以很好地与 DDD 方法配合使用。但是,您可以使用任何使域层没有任何依赖关系且没有任何 IO 调用的架构。
标签: rest model-view-controller domain-driven-design ddd-service