2013-02-21 67 views
2
  1. 概念,我的理解翻译反贪层之间的差异,但就执行而言,是两个与翻译层之间的差异,我们没有门面,也不服务(一个或多个)驻留内翻译层我们也不具有适配器,而是域鳕鱼e本身(位于有界上下文)调用译者实现差异

  2. a。如果外部系统ES实际上是另一个应用的一部分,提供的功能(这我们界上下文BC需求)通过其应用层并直接从其领域层,应该如何我们BC请求它需要的服务?通过用ES的应用层或通过正常通信(经由翻译/防腐层)与ES的域层通信?

    b。为什么不翻译/还需要防腐层当我们的BC 请求功能通过ES的应用层,因为数据是通过ES的应用层接收仍然需要被翻译成域名概念

    c。如果ES实际上是我们自己的应用程序的一部分,那么我想唯一的选择通过翻译/防腐层是我们BC由“直接”通信,以请求的功能与ES的领域层

回答

2
  1. 翻译是ACL的功能。这些不是单独的概念。实施可以通过各种方式完成。重点在于保护您的域名免受外部系统的侵害。 ACL通过将外部系统的模型转换为本地域模型来实现此目的。

2a。本地不列颠哥伦比亚省应通过应用服务或通过开放主机服务与外部BC进行通信,这基本上是一项Web服务。前一种方法只有在两个BC协同开发并且有直接实现两者的库时才可行。后者适用于完全由服务封装的第三方BC或BC。

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

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

+0

关于ACL的一个问题。 ACL正在外部*有界上下文的域模型和我们自己的有界上下文(* external *)之间进行转换,如解决方案中另一个.dll中定义的那样)。为了能够进行转换,我们的ACL仍然需要引用外部系统模型,以正确访问所有对象属性,然后进行翻译。我在想这个错误的方式吗? – Robotron 2018-01-26 12:32:26