Microservices 如何从ddd中的其他微服务获取数据?

Microservices 如何从ddd中的其他微服务获取数据?,microservices,domain-driven-design,Microservices,Domain Driven Design,我有两个服务订单服务和Z服务(Z是一个假想的名称)。我在我的项目中有3层(域、应用程序、基础架构)。订单服务有一个注册API。用户调用此web服务时会同时调用手机号码和其他数据。在订购服务中,为了接收Z_ID,需要将此电话号码发送到订购服务 我在基础架构层有一个方法用于Callz服务。但我的问题是,我应该在哪一层调用此方法 应在应用层中按如下方式处理: $order = Order::Create($price, $shop); $Z_id = // call method in infras

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

我在基础架构层有一个方法用于Callz服务。但我的问题是,我应该在哪一层调用此方法

应在应用层中按如下方式处理:

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

或者域层必须请求基础结构层?

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

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

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

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

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

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

    感谢您的回答。您的意思是通过应用程序层获取接收Z_ID并将其提供给域吗?首先,我创建了一个订单,而没有
    Z_ID
    ,在下一步,我在基础结构层的帮助下获取
    Z_ID
    ,并将其添加到order类中。是的,您可以使用此存储库(返回Z_ID)在应用层。这就是应用层使用域构建块的原因。当谈到第二个问题时,我认为最好先调用返回Z_ID的方法,然后将其与其他参数一起传递给构造函数,或者封装在某个域工厂中创建顺序的逻辑。谢谢您的回答。您的意思是通过应用程序层获取接收Z_ID并将其提供给域吗?首先,我创建了一个订单,而没有
    Z_ID
    ,在下一步,我在基础结构层的帮助下获取
    Z_ID
    ,并将其添加到order类中。是的,您可以使用此存储库(返回Z_ID)在应用层。这就是应用层使用域构建块的原因。当谈到第二个问题时——我认为最好先调用返回Z_ID的方法,然后将其与其他参数一起传递给构造函数,或者封装在某个域工厂中创建顺序的逻辑。