0%

軟體架構:分層式架構

把領域模型與業務邏輯分開,然後拿掉對基礎設施、使用者介面、甚至那些應用程式中非業務邏輯的直接依賴。把一個複雜的城市切割為不同層,在每個層中僅根據該階層本身的特性以及該層以下的各層,去考慮該層應該採用的設計模型。
By Eric Evans

在軟體架構中主要會有幾層 layer 再做不同的事情:

  1. 應用程式層 \rightarrow API 請求接收端
  2. 領域層 \rightarrow 處理業務邏輯的地方
  3. 基礎設施層 \rightarrow 呼叫外部 API或是連線 DB的地方

這種架構的關鍵的原則: 每一層只能跟自己或是位於下方的層耦合
但分層的架構也有不同形態:

  • 嚴格分層架構 (Strict Layers Architecture)
    • 只允許對 直接下層 進行耦合
  • 鬆散分層架構 (Relaxed Layers Architecture)
    • 允許高層對 任何低層 進行耦合 (即: 應用層直接呼叫基礎設施層)

以下來定義下各層的 input/output

Layer Receive Object Return Object Responsibility
應用程式層 Request Response 路由的導轉
領域層 Dto (Data Transfer Object) Domain 業務邏輯處理
基礎設施層 Dto Domain 跟DB/API交互取得資料, 並將資料轉換成領域層看得懂的格式