gpt4 book ai didi

domain-driven-design - Translation 和 AntiCorruption 层之间的实现差异

转载 作者:行者123 更新时间:2023-12-04 08:19:59 25 4
gpt4 key购买 nike

  1. 从概念上讲,我理解TranslationAntiCorruption 层 之间的区别,但就实现而言,两者之间的区别是翻译层 我们没有外观服务也没有驻留在翻译层中,我们也没有适配器,而是域代码本身(驻留在限界上下文中)调用翻译器

  2. 一个。如果外部系统 ES 实际上是另一个应用程序的一部分 并提供功能(我们的限界上下文 BC 需要)通过它的应用层并直接从它的域层,我们的BC应该如何请求它需要的服务?通过与 ES 的 应用层 通信或通过(通过 Translation/AntiCorruption 层 )与 ES 的 域通信层?

    当我们的 BC 通过 ES 的 应用层 请求功能时,为什么不需要翻译/反腐败层,因为它通过 ES 应用层 接收的数据 是否仍需要转换为领域概念

    如果 ES 实际上是我们自己的应用程序 的一部分,那么我认为唯一的选择是我们的 BC 请求通过翻译/反腐败层ES领域层“直接”通信来实现功能?

最佳答案

  1. 翻译是 ACL 所做的。这些不是单独的概念。实现可以通过多种方式完成。但重点是保护您的域免受外部系统的影响。 ACL 通过将外部系统的模型转换为本地域模型来实现这一点。

2a。本地 BC 应该通过应用程序服务或通过开放主机服务(基本上是 Web 服务)与外部 BC 通信。前一种方法只有在您同时开发两个 BC 并且您拥有实现两者的直接库时才可行。后者适用于第 3 方 BC 或完全由服务封装的 BC。

2b。这仍然需要发生,除非两个 BC 是串联开发的并且有一个共享的内核。不过,我不是共享内核的忠实拥护者。

2c。你的 BC 仍然需要通过 ES 的应用服务与 ES 通信。它不应该直接进入域对象。更好的是,让 BC 调用的 Web 服务公开 ES 功能。

关于domain-driven-design - Translation 和 AntiCorruption 层之间的实现差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com