時至今日,我們所談論的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,Data Access Objects)層:
此層由一系列的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組件來充當。其架構圖大致如下:
小結一下:
電腦編程的初期階段,我們的程式並沒有分層這一說,都是混沌不堪的,這樣的系統維護起來相當的費勁,而且代碼閱讀起來也是極其不爽的。技術發展到了今天,無論是多大規模的系統,分層的思想已經深入人心,因為我們的軟體系統在使用過程中,不會一成不變,總會有新的需求或者改動,如此一來,當初在設計系統架構的時候,採用分層模型去構建自己的系統就是一個不二之選了。那麼應用分層之後,每個層級採用什麼技術或者組件來支撐呢。請聽下回分解。