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

How To get data from other microservice in ddd?

我有两个服务order serviceZ service(Z是一个假设的名字)。我的项目中有 3 层(域、应用程序、基础设施)。订单服务有一个注册 API。用户调用此 Web 服务以及手机号码和其他数据。在订购服务中,为了接收 Z_ID,这个 phone 号码需要发送到订购服务

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

在应用层是不是应该这样处理:

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

或者域层必须向基础设施层请求?

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

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

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