【问题标题】:How To get data from other microservice in ddd?如何从 ddd 中的其他微服务获取数据?
【发布时间】:2020-11-15 18:36:31
【问题描述】:

我有两个服务order serviceZ service(Z 是一个假设的名称)。我的项目中有 3 层(域、应用程序、基础架构)。订单服务有一个注册 API。用户连同手机号码和其他数据一起调用此 Web 服务。在 ordering 服务中,为了接收 Z_ID,需要将此电话号码发送到 order 服务

我在基础设施层有一个调用 Z 服务的方法。但是我的问题是我应该在哪一层调用这个方法?

应该在应用层做如下处理:

$order = Order::Create($price, $shop);
$Z_id = // call method in infrastructure
$order->setZID($zid);

还是领域层必须向基础设施层请求?

【问题讨论】:

    标签: microservices domain-driven-design


    【解决方案1】:

    您可以通过以下方式解决此问题:

    1. 声明域接口(存储库构建块)
    2. 在基础架构中实现接口
    3. 在您的应用程序层中将其用作普通的存储库构建块

    值得注意的是,在这种方法中,域不再依赖于基础设施,因此它为您提供了极大的灵活性 - 例如,更改微服务甚至使用数据库而不是 HTTP 调用更容易,这种态度被称为六边形结构。

    【讨论】:

    • 感谢您的回答。你的意思是通过应用层拿到receive Z_ID给域?
    • 首先我创建一个没有Z_ID 的订单,下一步我在基础设施层的帮助下获得Z_ID 并将其添加到订单类中。
    • 是的,您可以在应用层使用这个存储库(返回 Z_ID)。这就是应用层的原因——使用域构建块。当涉及到您的第二个问题时-我认为最好先调用返回 Z_ID 的方法,然后将其与其他参数一起传递给构造函数,或者封装在某个域工厂中创建订单的逻辑。
    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2020-10-06
    • 2021-12-10
    • 2019-11-15
    相关资源
    最近更新 更多