J2EE和模式

1.定義

    在某種特定的上下文中反覆出現的一個“問題/解決方案”對子。

2.模式共同特點

l         模式是通過經驗觀察得出的。

l         一般來說模式都按一種專門的結構格式來記錄。

l         採用模式能夠避免重新發明輪子。

l         不同的模式處於不同的抽象層次上。

l         模式要經歷不斷的改進、完善。

l         模式是可以重用的工件。

l         模式可以用來讓大家交流系統設計和最佳實踐。

l         多個模式可以拼合起來,從而解決一個大型問題。

3.軟件模式類型

l         設計模式

l         架構模式

l         分析模式

l         創建型模式

l         結構型模式

l         行爲型模式

4J2EE模式

    即是設計模式也可算是架構模式,並可按邏輯分三類:

u           表現層

u           業務層

u           集成層

4.1表現層

   攔截過濾器

   前端控制器

   Context對象

   反應控制器

   視圖助手

   複合視圖

   服務到工作者

   分配器視圖

4.2 業務層

   業務代表

   服務定位器

   會話門面

   應用服務

   業務對象

   複合實體

   傳輸對象

    傳輸對象組裝器

    值列表處理器

4.3 集成層

    數據訪問對象

    服務激活器

    業務領域存儲

    Web Service中轉

5 模式框架

    在一個整合的應用場景下的一組模式集合。要在模式的層面上把解決方案組合起來,或把組件裝配到一起。

    不僅需要孤立地理解單個模式,還必須注重它們之間的關係和組合;如何才能最好地把多個模式連接在一起,形成大的解決方案。

    模式驅動的開發過程:

l         確定應用場景,爲系統每個層次提出合適的模式。

l         確定模式組合(或者說解決方案的主旨),從而給出模式框架。

l         爲系統方案中的每個角色選定具體實現策略。

6.按邏輯劃分的五層模型

6.1 客戶端層

    應用客戶端、Applet、應用程序和其他GUI:用戶交互、UI表現和UI設備。

    客戶端可以是web瀏覽器,java應用程序,wap手機之類。

6.2 表現層

    JSPServlet和其他UI元素:集中登錄、會話管理、內容創建/內容格式/內容傳遞。

    封裝了服務於訪問系統的客戶端的所有表現邏輯。攔截了客戶端的請求,提供單一的登錄入口,構造了會話管理,控制了對業務服務的訪問,構建了響應,並把響應傳送到客戶端。Servletjsp本身不是UI元素。

6.3 業務層

    EJB和其他業務對象:業務邏輯、事務、數據、服務。

    業務一般在這層,但也可能在遺留系統。

6.4 集成層

    JMSJDBC、連接器和遺留系統:資源適配器、遺留/外部系統、規則引擎、工作流。

    使用JDBCJ2EE連接器技術、某種廠商專有的中間件,從而於資源層協作。

6.5 資源層

    數據庫,外部系統和遺留資源:資源、數據和外部服務。

    業務數據於外部資源。

7.模式關係圖

8.模式應用

8.1表示層模式

n         對請求做預處理或後處理:攔截過濾器

n         在請求處理中加入日誌、調試以及其他操作:前端控制器、攔截過濾器

n         集中對請求處理的控制:前端控制器、攔截過濾器、應用控制器

n         爲降低控制器組件和助手組件間的耦合度,創建通用的命令接口或context對象:前端控制器,應用控制器,Context對象

n         控制器應該用servlet還是JSP實現:前端控制器

n         從多個子視圖創建一個視圖,複合視圖

n         視圖應該用servlet還是jsp實現,視圖助手

n         如何劃分視圖和模型:視圖助手

n         在那裏封裝表現層相關的格式化數據邏輯:視圖助手

n         助手組件應該用JavaBean還是定製標籤實現:視圖助手

n         合併多個表現層模式:攔截過濾器,分配器視圖

n         在哪裏封裝選擇、分派視圖的視圖管理/導航邏輯:服務到工作者,分配器視圖

n         在哪裏保存會話狀態:在客戶端保存會話狀態,在表現層保護會話狀態,在業務層保護會話狀態

n         控制客戶端對特定視圖或子視圖的訪問:控制客戶端訪問,對客戶端隱藏資源

n         控制對應用系統請求的流程:重複的表單提交,引入同步令牌

n         控制重複的表單提交:重複的表單提交,引入同步令牌

n         利用<jsp:setPropertity>JSP標準屬性複製機制時,包含的設計問題:助手類屬性——完整性和一致性

n         分離數據訪問代碼:分離數據訪問代碼

8.2業務層模式

n         儘量減少表現層和業務層之間的耦合:業務代表

n         爲客戶端緩存業務服務:業務代表

n         隱藏業務服務的尋址/創建/訪問的實現細節:業務代表,服務定位器

n         隔離服務尋址中的特定廠商/技術的依賴:服務定位器

n         爲業務服務的尋址和創建提供統一的方法:服務定位器

n         隱藏EJBJMS組件尋址的複雜度和依賴性:服務定位器

n         在業務對象和客戶端間,不同層間傳輸數據:傳輸對象

n         爲遠程客戶端提供簡單,統一的接口:業務代表,會話門面,應用服務

n         爲訪問業務層組件提供粗粒度方法,從而減少遠程方法調用:會話門面

n         管理EJB組件之間的關係,隱藏交互複雜度:會話門面

n         避免使業務層組件直接暴露給客戶端:會話門面,應用服務

n         爲訪問業務層組件提供統一的邊界:會話門面,應用服務

n         用對象實現複雜的業務領域概念模型:業務對象

n         爲對象實現複雜的業務領域概念模型:業務對象

n         爲業務對象和entity bean的設計找出粗粒度對象和從屬對象:業務對象,複合實體

n         設計粗粒度entity bean:複合實體

n         減少或消除entity bean客戶端對數據庫結構的依賴:複合實體

n         減少或消除entity bean之間的遠程關係:複合實體

n         減少entity bean數量,提高可維護性:複合實體

n         從多個業務層組件中獲取應用數據模型:傳輸對象組裝器

n         輕鬆構造應用數據模型:傳輸對象組裝器

n         對客戶端隱藏數據模型構造的複雜性:傳輸對象組裝器

n         提供業務層查詢和結果列表處理:值列表處理器

n         儘可能減小使用EJB finder方法帶來的負載:值列表處理器

n         在服務器端爲客戶端提供具有向前/向後導航功能的查詢結果緩存:值列表處理器

n         選用有狀態session bean還是無狀態session bean的權衡:“session bean--無狀態vs有狀態”

n         保護entity bean,禁止客戶端直接訪問:用session bean包裝entity bean

n         封裝業務服務,隱藏業務層實現細節:引入業務代表

n         entity bean中包含業務邏輯:entity bean中的業務邏輯,將業務邏輯移至session bean

n         session bean作爲粗粒度業務服務提供:合併session bean,用session bean包裝entity bean

n         減少和/消除由entity bean之間的通信引起的網絡和容器負擔:減少entity bean之間的通信

n         分離數據訪問代碼:分離數據訪問代碼

8.3集成層模式

l         儘可能減小業務層和資源層之間的耦合:數據訪問對象

l         集中對資源層的訪問:數據訪問對象

l         儘可能減小業務層組件中訪問資源的複雜度:數據訪問對象

l         爲企業應用提供異步處理能力:服務激活器

l         向業務層發送異步請求:服務激活器

l         把請求作爲一組並行任務異步處理:服務激活器

l         透明地實現對象模型持久化:業務領域存儲

l         實現定製持久化框架:業務領域存儲

l         XML和標準Internet協議暴露WebServiceWeb Service中轉

l         把現存服務聚合,中轉爲WebServiceWeb Service中轉

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章