2013-02-21 145 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