洋蔥架構從六邊形架構發展而來,在中間的核心業務邏輯里又引入了分層。對于洋蔥架構來說,應用構建在領域模型上,里層定義接口,外層實現接口,只能外層調用里層,里層不能調用外層,并且里層感知不到外層的存在。
Domain Model:業務模型,對應DDD中的Entity、值對象等
Domain Service:核心業務邏輯
Application Service:應用的輸入輸出層
User Interface/Tests/Application:適配器層
優點:
- 各層職責清晰,提高了大型復雜項目的可維護性。
- 結合DDD,使項目以領域模型為主。
- 沒有外部依賴,方便進行單元測試。
缺點:
- 如果只是簡單的CRUD應用使用六邊形架構會加大復雜性,拖慢項目進度
- 業務比較簡單的話也會加大復雜性
- 引入了DDD的思想,對技術人員的要求較高