首页 > 解决方案 > 如何在 DDD 中使用外部服务

问题描述

我在 DDD 中有一个项目,我想知道我必须在哪一层编写服务来使用外部服务。在这种情况下,外部服务是关于要在前端显示的信息(特别是付款单)。

标签: apidomain-driven-design

解决方案


这个问题有点模糊,但我猜你有一个有界上下文,你甚至有一个用于这个有界上下文的 UI。现在您想在您的 BC 的 UI 中显示来自另一个(外部)BC 的一些数据。在为此创建应用程序服务之前,问问自己:用户应该如何处理这些信息?它有助于解决您的BC的一些业务问题吗?用户是否根据他或她看到的付款单数据在您的 BC 内采取不同的操作?如果是这样,那么您可能需要在您的 BC 的域模型中显式地对这些业务规则进行建模,与其他 BC 建立某种关系,并同意一项合同以获取满足您的不变量的数据。如果您只需要在 UI 中为用户提供快捷方式/便利性,请尝试将此功能推送到 UI 级别,也许一个简单的链接到另一个上下文就足够了......不应该粗心地接触外部 BC,因为每个外部依赖项都会使您的 BC 本身的独立性和价值降低。首先尝试使用诸如反腐败层、客户供应商、顺从者等战略设计模式之一来澄清与其他上下文的通信。在此分析之后,应该更容易确定您将如何放置逻辑在哪一层对于这个外部调用。


推荐阅读