應用分層架構
原文地址 https://www.52interview.com/book/36/347

-
開放 API 層: 可直接封裝 Service 接口暴露成 RPC 接口; 通過 Web 封裝成 http 接口; 網關控制層等。
-
終端顯示層:各個端的模板渲染并執行顯示的層。當前主要是 velocity 渲染,JS 渲染,JSP 渲染,移 動端展示等。
-
Web 層:主要是對訪問控制進行轉發,各類基本參數校驗,或者不復用的業務簡單處理等。
-
Service 層:相對具體的業務邏輯服務層。
-
Manager 層:通用業務處理層,它有如下特征:
1) 對第三方平臺封裝的層,預處理返回結果及轉化異常信息,適配上層接口。 2) 對 Service 層通用能力的下沉,如緩存方案、中間件通用處理。 3) 與 DAO 層交互,對多個 DAO 的組合復用。
-
DAO 層:數據訪問層,與底層 MySQL、Oracle、Hbase、OB 等進行數據交互。
-
第三方服務:包括其它部門 RPC 服務接口,基礎平臺,其它公司的 HTTP 接口,如淘寶開放平臺、支 付寶付款服務、高德地圖服務等。
-
外部數據接口:外部(應用)數據存儲服務提供的接口,多見于數據遷移場景中。
分層領域模型規約:
- DO(Data Object):此對象與數據庫表結構一一對應,通過 DAO 層向上傳輸數據源對象。
- DTO(Data Transfer Object):數據傳輸對象,Service 或 Manager 向外傳輸的對象。
- BO(Business Object):業務對象,可以由 Service 層輸出的封裝業務邏輯的對象。
- Query:數據查詢對象,各層接收上層的查詢請求。注意超過 2 個參數的查詢封裝,禁止使用 Map 類 來傳輸。
- VO(View Object):顯示層對象,通常是 Web 向模板渲染引擎層傳輸的對象。
manager層的使用
??其它層的關系,大家都很容易理解。但是manager層和service層容易搞混。這也是初學者容易迷惑的地方,筆者也是反復揣摩和多次查閱了相關資料,有了一個比較合理的理解。
??筆者認為,controller調用service層,service層調用dao層(或Mapper層)。manager層出現的目的就是供其他service層使用,就是說service不能直接調用service,而是通過manager來做調用。
- manager層是對service層的公共能力的提取。
- manager層還可以下沉內部的common/helper等。
??筆者所在團隊,Java項目的搭建也是參照的這套標準。但是沒有放之四海而皆準的標準,在實際搭建中都會根據實際業務和團隊文化而因地制宜的有所改造。
??這里值得注意的是manager層,我想可能很多項目是沒有使用這個層的。或者直接使用的common/helper作為替代。

浙公網安備 33010602011771號