Translation和AntiCorruption图层之间的实现差异

时间:2013-02-21 20:09:22

标签: domain-driven-design

  1. 从概念上讲,我理解翻译 AntiCorruption图层之间的区别,但就实现而言,两者之间的区别是翻译层我们没有 Facade ,也没有服务驻留在翻译层中,我们也没有适配器,而是域代码本身(驻留在 Bounded Context 中)调用 Translator

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

    湾当 BC 通过 ES 应用层请求功能时,为什么还不需要翻译/ AntiCorruption层,因为通过 ES 应用层接收的数据仍然需要转换为域概念

    ℃。如果 ES 实际上是我们自己的应用程序的一部分,那么我假设只有我们的 BC 的选项才能请求通过 Translation / AntiCorruption图层“直接”与 ES的 域图层进行通信?

1 个答案:

答案 0 :(得分:3)

  1. 翻译是ACL的作用。这些不是单独的概念。可以通过各种方式实施。但重点是保护您的域免受外部系统的影响。 ACL通过将外部系统的模型转换为本地域模型来实现此目的。
  2. 2a上。本地BC应该通过应用服务或通过开放主机服务与外部BC通信,该服务基本上是Web服务。前两种方法只有在两个BC同时开发并且您有直接库来实现两者时才可行。后者适用于由服务完全封装的第三方BC或BC。

    2B。这仍然需要发生,除非两个BC是串联开发并具有共享内核。然而,我不是共享内核的忠实粉丝。

    2c中。您的BC仍需要通过ES的应用程序服务与ES进行通信。它永远不应该直接转到域对象。更好的是,通过BC可以调用的Web服务公开ES功能。