1. 程式人生 > >Web 分層結構與異常處理

Web 分層結構與異常處理

常見的Web軟體分層結構


  • 開放介面層:可直接封裝 Service 方法暴露成 RPC 介面; 通過 Web 封裝成 http 介面; 進行閘道器安全控制、 流量控制等。
  • 終端顯示層:各個端的模板渲染並執行顯示的層。 當前主要是 velocity 渲染, JS 渲染,JSP 渲染,移動端展示等。
  • Web 層:主要是對訪問控制進行轉發,各類基本引數校驗,或者不復用的業務簡單處理等。
  • Service 層:相對具體的業務邏輯服務層。
  • Manager 層:通用業務處理層,它有如下特徵:

1) 對第三方平臺封裝的層,預處理返回結果及轉化異常資訊;

2) 對 Service 層通用能力的下沉,如快取方案、 中介軟體通用處理;

3) 與 DAO 層互動,對多個 DAO 的組合複用。

  • DAO 層:資料訪問層,與底層 MySQL、 Oracle、 Hbase 等進行資料互動。
  • 外部介面或第三方平臺:包括其它部門 RPC 開放介面,基礎平臺,其它公司的 HTTP 介面。 

異常處理最佳實踐:

  • 在 DAO 層,產生的異常型別有很多,無法用細粒度的異常進行 catch,使用 catch(Exception e)方式,並 throw new DAOException(e),不需要列印日誌,因為日誌在 Manager/Service 層一定需要捕獲並打到日誌檔案中去,如果同臺伺服器再打日誌,浪費效能和儲存。
  • 在 Service 層出現異常時,必須記錄出錯日誌到磁碟,儘可能帶上引數資訊,相當於保護案發現場。
  • 如果 Manager 層與 Service 同機部署,日誌方式與 DAO層處理一致,如果是單獨部署,則採用與 Service 一致的處理方式。 
  • Web 層絕不應該繼續往上拋異常,因為已經處於頂層,如果意識到這個異常將導致頁面無法正常渲染,那麼就應該直接跳轉到友好錯誤頁面, 加上使用者容易理解的錯誤ᨀ示資訊。開放介面層要將異常處理成錯誤碼和錯誤資訊方式返回。