COLA架構
COLA架構設計
COLA 的分層是一種經過改良的三層架構,主要是講傳統的業務邏輯層拆分為應用層、領域層和基礎設施層。
- 展示層(Presentation Layer):負責以 Rest 的風格接收 Web 請求,然後将請求路由給 Application 層執行,并傳回視圖模型(View Model),其載體通常是資料傳輸對象(Data Transfer Object, DTO);
- 應用層(Application Layer):主要負責擷取輸入、組裝上下文、做輸入校驗、調用領域層做業務處理,當需要時發送消息通知。當然,層次是開放的,若有需要,應用層也可以直接通路基礎設施層;
- 領域層(Domain Layer):主要封裝了核心業務邏輯, 并通過領域服務(Domaini Service)和領域對象(Entities)的函數對外部提供業務邏輯的計算和處理;
- 基礎設施層(Infrastructure Layer):主要包含資料通路通道(Tunnel)、Config 和 Comon。這裡Tunnel這個概念對所有的資料來源進行抽象,資料來源可以是資料庫(MySQL/NoSQL)、搜尋引擎、檔案系統,也可以是SOA服務等;Config 負責應用的配置;Common是通用的工具類;
規範設計
COLA制定了一系列的規範,包括元件(Module)結構、包(Package)結構、命名等。
元件規範
COLA規定一個應用至少要有3個元件:應用層、領域層和基礎設施層。如果不是嚴格的前後端分離,也可以加入展示層的元件,但這是可選的。元件的依賴關系如下:
從上面的依賴關系可以看到,領域元件(Domain Module)是應用的核心,負責核心業務邏輯的處理,不應該有任何的外部依賴。領域元件的實作方式有兩種,一種是把領域元件設計成純POJO,另一種是通過依賴倒置,将資料通路的接口放在領域元件裡,讓基礎設施元件(Infrastructure Module)去做接口的實作。
包規範
應用的包結構
領域層的包結構
基礎設施層的包結構
命名規範
在COLA架構中,制定了一系列的命名規範,以便通過名稱就能知曉該類的作用和職責範圍,進而極大的提升代碼的可了解性,提升代碼審查的效率。
對于類名的主要約定如表