【问题标题】:Intermediate compute call before domain creation in DDD(Domain Driven Design)在 DDD(域驱动设计)中创建域之前的中间计算调用
【发布时间】:2020-05-04 01:53:28
【问题描述】:
我有一个接受访客订单的 UI。访客下订单后,UI 有一个按钮,用于计算税款并在下实际订单之前返回 UI。
我有带有 ADD、UPDATE、GET、GET ALL 和 DELETE 端点的基于 DDD 的订单 API。但是对于中间的“获取税”按钮,我应该怎么做?它是一个查询 (CQRS) 端操作还是一个 API 端点,它与不同的服务类对话以在域创建之前获得结果。
【问题讨论】:
标签:
api
domain-driven-design
ddd-service
dddd
【解决方案1】:
如果此计算基于业务逻辑,但不需要任何持久数据来完成它的工作,而不是输入你应该简单将此逻辑放入域服务中。这意味着,如果计算本身也没有持久化。
您还可以在其他地方重用此域服务,以备不时之需。甚至作为聚合根方法的参数。
所以在你的情况下,我会简单地从控制器调用域服务来执行计算。但请确保域服务方法将接收放置在域层中的一些值对象以及方法参数(或者如果足够的话,只是一个原语)而不是任何与控制器相关的对象(如请求)。