【问题标题】:How to handle cross domain logic in Domain Driven Design如何在域驱动设计中处理跨域逻辑
【发布时间】:2019-07-17 15:18:26
【问题描述】:

我是 DDD 的新手,我正在尝试在我的 Go REST API 项目中使用它。当存在可能跨域的逻辑时,我对如何处理这种情况感到非常困惑。

假设我有以下文件夹结构,其中有两个域(客户和订单):

+.
-- Customer
   +-- service
       +-- http
   +-- usecase
   +-- repository
-- Order
   +-- service
       +-- http
   +-- usecase
   +-- repository

一般来说,假设Order域中有一个端点可以提供创建订单功能,那么http服务应该充当路由器并调用相应的usecase来处理逻辑,添加订单数据到repository(数据库)。

如果我想添加一个新逻辑,客户在创建订单时将获得特定的reward points 怎么样。假设用例中有一个CreateOrder 函数可以在数据库中创建一个新订单,但是我应该如何与Customer 域进行交互以便将reward points 添加到客户?

我正在考虑从 Order 用例函数调用 Customer 用例函数,但我不确定它是否会触发 circular import 问题。

【问题讨论】:

    标签: domain-driven-design


    【解决方案1】:

    在事件驱动架构中,您将使用消息传递来解耦您的系统。

    例如,您的奖励系统可以订阅 CustomerActivatedEvent 并注册新客户以跟踪奖励。此外,奖励有界上下文可以订阅OrderShippedEvent 并处理适当的奖励处理。

    这样CustomersOrdering BC 甚至不知道彼此,但Rewards BC 可以愉快地奖励各种客户。

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 2023-04-05
      • 2012-07-18
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多