【J2EE】:Java EE應用的分層模型

連江偉發表於2016-03-06

        時至今日,我們所談論的JavaEE應用,往往已經超出了Sun所提出的經典JavaEE應用規範,而是一種更廣泛的開發規範。

        經典JavaEE應用往往以EJB(企業級Java Bean)為核心,以應用伺服器為執行環境,所以通常開發和執行的成本都比較高。

        而現在市場上比較流行的輕量級Java EE應用具備了JavaEE規範的種種特徵,例如物件導向建模的思想、優秀的應用分層及良好的可擴充套件性、可維護性。輕量級JavaEE應用保留了經典Java應用的架構,但是開發和執行成本大大降低了。


        無論是經典的JavaEE架構,還是輕量級JavaEE架構,其本質的思想都是一樣的,那就是我們都聽說過的分層思想,兩種架構模式大致上都可以分為如下幾層。


        DomainObject層:


        此層是由一系列的POJO(Plain OldJava Object,即普通的、傳統的Java物件)組成,這些物件是該系統的Domain Object,往往包含了各自所需實現的業務邏輯方法。


        DAO(Data AccessObject,資料訪問物件)層:


        此層由一系列的DAO元件組成,這些DAO實現了對資料庫的建立、查詢、更新和刪除(CRUD)等原子操作。


        在經典JavaEE應用中,DAO層也被改稱為EAO層,EAO層元件的作用與DAO層元件的作用基本相似。只是EAO層主要完成對實體(Entity)的CRUD操作,因此簡稱為EAO層。


        業務邏輯層:


        此層由一系列的業務邏輯物件組成,這些業務邏輯物件實現了系統所需要的業務邏輯方法。這些業務邏輯方法可能僅僅用於暴露Domain Object物件所實現的業務邏輯方法,也可能是依賴DAO元件實現的業務邏輯方法。


        控制器層:


        此層是由一系列控制器組成,這些控制器用於攔截使用者的請求,並且呼叫業務邏輯元件的業務邏輯方法,處理使用者請求,並且根據處理結果轉發到不同的表現層元件。


        表現層:


        此層由一系列的JSP頁面、Velocity頁面、PDF文件檢視元件組成,負責收集使用者請求,並顯示處理結果。


        大致上,輕量級JavaEE應用的架構如下圖所示:


        各層的JavaEE元件之間以鬆耦合的方式耦合在一起,各元件並不以硬編碼的方式耦合,這種方式是為了應對以後的擴充套件需求。從上向下,上面元件的實現依賴於下面元件的功能;自下而上,下面元件支援上面元件的實現。


        至於以EJB/JPA為核心的經典JavaEE應用的結構,和上圖中的結構大致上是相似的,只是它的DAO層元件和業務邏輯元件兩者都是由EJB元件來充當。其架構圖大致如下:


        小結一下

        計算機程式設計的初期階段,我們的程式並沒有分層這一說,都是混沌不堪的,這樣的系統維護起來相當的費勁,而且程式碼閱讀起來也是極其不爽的。技術發展到了今天,無論是多大規模的系統,分層的思想已經深入人心,因為我們的軟體系統在使用過程中,不會一成不變,總會有新的需求或者改動,如此一來,當初在設計系統架構的時候,採用分層模型去構建自己的系統就是一個不二之選了。那麼應用分層之後,每個層級採用什麼技術或者元件來支撐呢?請聽下回分解。

相關文章