【推薦】圖中預設上層依賴於下層,箭頭關係表示可直接依賴,如:開放介面層可以依賴於web 層
,也可以直接依賴於service 層
,依此類推:
1 開放介面層:可直接封裝 service 方法暴露成 rpc 介面;通過 web 封裝成 http 介面;閘道器控制層等。
2 終端顯示層:各個端的模板渲染並執行顯示的層。當前主要是 velocity 渲染,js 渲染,jsp 渲染,移
動端展示等。
3 web 層:主要是對訪問控制進行**,各類基本引數校驗,或者不復用的業務簡單處理等。
4 service 層:相對具體的業務邏輯服務層。
5 manager 層:通用業務處理層,它有如下特徵:
1) 對第三方平台封裝的層,預處理返回結果及轉化異常資訊。
2) 對 service 層通用能力的下沉,如快取方案、中介軟體通用處理。
3) 與 dao 層互動,對多個 dao 的組合復用。
6 dao 層:資料訪問層,與底層 mysql、oracle、hbase、ob 等進行資料互動。
7 外部介面或第三方平台:包括其它部門 rpc 開放介面,基礎平台,其它公司的 http 介面。
【參考】(分層異常處理規約)在 dao 層,產生的異常型別有很多,無法用細粒度的異常進行 catch,使用 catch(exception e)方式,並 throw new daoexception(e),不需要列印日誌,因為日誌在 manager/service 層一定需要捕獲並列印到日誌檔案中去,如果同台伺服器再打日誌,浪費效能和儲存。在 service 層出現異常時,必須記錄出錯日誌到磁碟,盡可能帶上引數資訊,相當於保護案發現場。manager 層與 service 同機部署,日誌方式與 dao 層處理一致,如果是單獨部署,則採用與 service 一致的處理方式。web 層絕不應該繼續往上拋異常,因為已經處於頂層,如果意識到這個異常將導致頁面無法正常渲染,那麼就應該直接跳轉到友好錯誤頁面,盡量加上友好的錯誤提示資訊。開放介面層要將異常處理成錯誤碼和錯誤資訊方式返回。
1
) do(data object):此物件與資料庫表結構一一對應,通過 dao 層向上傳輸資料源物件。
2) dto(data transfer object):資料傳輸物件,service 或manager 向外傳輸的物件
3) bo(business object):業務物件,可以由 service 層輸出的封裝業務邏輯的物件。
4) query:資料查詢物件,各層接收上層的查詢請求。注意超過 2 個引數的查詢封裝,禁止使用 map 類來傳輸。
5) vo(view object):顯示層物件,通常是 web 向模板渲染引擎層傳輸的物件。
阿里開發手冊泰山版學習筆記二 程式設計規約 常量定義
強制 不允許任何魔法值 即未經預先定義的常量 直接出現在 中。反例 本例中同學 a 定義了快取的 key,然後快取提取的同學 b 使用了 id taobao 來提取,少了下劃線,導致故障。string key id taobao tradeid cache.put key,value 強制 在 lo...
阿里java開發手冊1 3版 觀感
看了一下午,列下比較有用的點 1.2 常量定義 第2點 long a 2l,l用大寫 1.2 常量定義 第3點 不要使用乙個常量類維護所有常量,按常量功能進行歸類,分開維護。1.3 格式 第2點 左右小括號和字元之間不加空格 比如 if a b 1.3 格式 第5點 採用4個空格縮排,禁止使用tab...
學習阿里巴巴開發手冊 6
1.在switch塊內,每個case通過break return等終止,或者說明繼續執行到那個case為止。每個switch塊內,必須包含乙個default語句且放在最後。即使什麼沒有。2.if else for while do語句中必須使用大括號,即使一行 3.表達異常的分支時,少用if els...