設計目標:
1. 開發效率
2. 性能、預算
3. 符合OO設計
4. 避免復雜性
5. 可維護性、可擴展性,可重用性
分布式應用
不足:
1. 增加了應用的復雜性
2. 對性能會造成一定的影響
3. 給OO Design帶來一定的困難
優點:
1. 能滿足多類型客戶端的需求(applet, swing)
2. 能同時將組件部署到不同的應用服務器
采用前提:
1. 客戶端需要使用J2EE技術,比如Swing
2. 為了與已有的分布式應用集成, 需要將J2EE組件部署到多個應用服務器
3. 實現對多應用組件部署進行控制,提高系統靈活性、可靠性
可選技術:
可通過集群和負載平衡(remote interface調用單服務器應用)來實現分布式應用的健壯性、靈活性
EJB技術
缺點:
1. 測試困難
2. 部署麻煩(classloader復雜、部署描述符復雜、開發-部署-測試周期長)
3. 采用remote interface的EJB不符合OO Design
4. 技術復雜,可能將簡單需求變得復雜開發
5. 減少了應用服務器的選擇
優點:
1. 能遠程訪問組件
2. 能將應用組件部署到不同服務器(分布式應用)
3. 支持多客戶端訪問
4. 使用到異步消息模式的時候可以采用message driven bean
5. 能實現復雜的事務管理
采用前提:
1、 對EJB底層比較熟悉
2、 需要使用EJB的角色安全訪問
3、 需要使用EJB的事務管理
4、 需要使用EJB的線程安全管理
5、 需要使用基于RMI/IIOP的分布式架構
4種J2EE基本框架
一.非分布式框架
1、(Web UI tier + Business Logic tier) + implement tier + DBMS
實現簡單、能滿足大部分需求,是中小型J2EE項目中采用最多的框架,雖然沒有使用EJB,但是層次清晰。
優點:
1.簡單
2.速度快
3.符合OO設計
4.容易測試
缺點:
1.僅僅適用于Web UI
2.自己管理事務
3.無法實現高并發處理
4.無法使用entity bean
5.不支持多JVM應用
2、Web UI + local EJB + DBMS
稍微復雜,能使用EJB容器的事務,線程管理,沒有采用分布式特性,性能比遠程調用稍好
優點:
1.降低了EJB的復雜度
2.不會對基礎框架造成影響
3.本地調用對性能有一定優勢
4.可以使用EJB容器的事務和線程管理
5.可以使用entity bean
缺點:
1.比純web應用復雜
2.單JVM運行
3.單客戶端(web)支持
4.測試困難
二.分布式框架
1.基于遠程調用的分布式
架構最復雜,對有遠程訪問客戶端的需求是理想選擇,健壯、靈活,但是不容易維護、測試、實現困難
優點:
1. 多客戶端支持
2. 可將應用組件部署到多臺服務器(JVM)
缺點:
1.增加了復雜度
2.影響性能
3.調試困難
4.必須在EJB容器中運行
5.異常處理復雜
6.OO設計困難
2.基于Web Service的分布式
對非J2EE客戶端調用適用性好,無分布式調用,往往作為第一、第二架構的變體。
優點:
1. 通用標準,能支持更多客戶端類型
2. 提供的Web service接口比RMI接口更好
3. Web service傳輸協議比RMI更友好
缺點:
1. 性能差
2. 需要作object與xml之間的轉換
3. 相對于java client來說,性能也不好
UI框架部分
選擇UI的幾個決定性因素:
1. 用戶的實際需求
2. 項目的性能要求
3. 當前開發人員技術水平
J2EE框架設計幾個需要強調的觀點
簡單
可維護性
性能
開發效率
J2EE框架設計通用法則
1. 使用J2EE,而不是讓J2EE牽著鼻子走(因需而用,而不是因有而用)
2. 萬不得已不要使用EJB(謬論:把EJB視為J2EE核心)
3. 萬不得已不要采用分布式架構
4. 企業應用不要僅僅局限于J2EE技術(業務知識,.NET技術)
5. J2EE不僅僅是一個規范
6. 謹慎處理數據庫通用性,數據比J2EE應用的壽命更長
7. 利用好JDBC(SQL)技術
8. 不要忽略數據庫的能力
9. 簡單即是美
10.有時候使用EJB的好處可能來自于無狀態Bean
11.在項目啟動初期就應該考慮到性能問題
12.在設計的時候考慮應用在集群環境下運行的可能性
13.好的J2EE設計來自于好的OO設計
14.使用輔助類來隱藏底層API實現
15.在web UI層采用MVC框架
J2EE框架設計成則
1. 底層設計必須著眼當前可用規范而不是未來新規范
2. 沒有針對實際需求的簡單例程參考價值有限
3. 對框架進行詳盡的測試
4. 對代碼進行詳盡注釋
5. 盡可能早的對風險加以解決
6. 項目啟動時就確定所采用的服務器
7. 在項目早期實現自動測試和構建
8. 在項目啟動時雇傭J2EE設計專家
9. 避免重復發明輪子
10.統一設計和編碼風格
posted on 2007-10-16 01:36
前方的路 閱讀(333)
評論(0) 編輯 收藏 所屬分類:
軟件架構 、
軟件思想