隨筆-72  評(píng)論-20  文章-0  trackbacks-1

          設(shè)計(jì)目標(biāo)

           

          1.       開(kāi)發(fā)效率

          2.       性能、預(yù)算

          3.       符合OO設(shè)計(jì)

          4.       避免復(fù)雜性

          5.       可維護(hù)性、可擴(kuò)展性,可重用性

           

           

          分布式應(yīng)用

           

          不足:

          1.  增加了應(yīng)用的復(fù)雜性

          2.  對(duì)性能會(huì)造成一定的影響

          3.  OO Design帶來(lái)一定的困難

          優(yōu)點(diǎn):

          1.  能滿足多類型客戶端的需求(applet, swing

          2.  能同時(shí)將組件部署到不同的應(yīng)用服務(wù)器

          采用前提:

          1.  客戶端需要使用J2EE技術(shù),比如Swing

          2.  為了與已有的分布式應(yīng)用集成需要將J2EE組件部署到多個(gè)應(yīng)用服務(wù)器

          3.  實(shí)現(xiàn)對(duì)多應(yīng)用組件部署進(jìn)行控制,提高系統(tǒng)靈活性、可靠性

           

           

          可選技術(shù):

          可通過(guò)集群和負(fù)載平衡(remote interface調(diào)用單服務(wù)器應(yīng)用)來(lái)實(shí)現(xiàn)分布式應(yīng)用的健壯性、靈活性

           

           

          EJB技術(shù)

           

          缺點(diǎn):

          1.  測(cè)試?yán)щy

          2.  部署麻煩(classloader復(fù)雜、部署描述符復(fù)雜、開(kāi)發(fā)-部署-測(cè)試周期長(zhǎng))

          3.  采用remote interfaceEJB不符合OO Design

          4.  技術(shù)復(fù)雜,可能將簡(jiǎn)單需求變得復(fù)雜開(kāi)發(fā)

          5.  減少了應(yīng)用服務(wù)器的選擇

          優(yōu)點(diǎn):

          1.  能遠(yuǎn)程訪問(wèn)組件

          2.  能將應(yīng)用組件部署到不同服務(wù)器(分布式應(yīng)用)

          3.  支持多客戶端訪問(wèn)

          4.  使用到異步消息模式的時(shí)候可以采用message driven bean

          5.  能實(shí)現(xiàn)復(fù)雜的事務(wù)管理

           

           

          采用前提:

          1、  對(duì)EJB底層比較熟悉

          2、  需要使用EJB的角色安全訪問(wèn)

          3、  需要使用EJB的事務(wù)管理

          4、  需要使用EJB的線程安全管理

          5、  需要使用基于RMI/IIOP的分布式架構(gòu)

           

           

          4J2EE基本框架

           

          一.非分布式框架

           

          1(Web UI tier + Business Logic tier) + implement tier + DBMS

           

          實(shí)現(xiàn)簡(jiǎn)單、能滿足大部分需求,是中小型J2EE項(xiàng)目中采用最多的框架,雖然沒(méi)有使用EJB,但是層次清晰。

          優(yōu)點(diǎn):

          1.簡(jiǎn)單

          2.速度快

          3.符合OO設(shè)計(jì)

          4.容易測(cè)試

          缺點(diǎn):

          1.僅僅適用于Web UI

          2.自己管理事務(wù)

          3.無(wú)法實(shí)現(xiàn)高并發(fā)處理

          4.無(wú)法使用entity bean

          5.不支持多JVM應(yīng)用

          2Web UI + local EJB + DBMS

           

          稍微復(fù)雜,能使用EJB容器的事務(wù),線程管理,沒(méi)有采用分布式特性,性能比遠(yuǎn)程調(diào)用稍好

          優(yōu)點(diǎn):

          1.降低了EJB的復(fù)雜度

          2.不會(huì)對(duì)基礎(chǔ)框架造成影響

          3.本地調(diào)用對(duì)性能有一定優(yōu)勢(shì)

          4.可以使用EJB容器的事務(wù)和線程管理

          5.可以使用entity bean

          缺點(diǎn):

          1.比純web應(yīng)用復(fù)雜

          2.單JVM運(yùn)行

          3.單客戶端(web)支持

          4.測(cè)試?yán)щy

           

           

          二.分布式框架

           

          1.基于遠(yuǎn)程調(diào)用的分布式

           

          架構(gòu)最復(fù)雜,對(duì)有遠(yuǎn)程訪問(wèn)客戶端的需求是理想選擇,健壯、靈活,但是不容易維護(hù)、測(cè)試、實(shí)現(xiàn)困難

          優(yōu)點(diǎn):

          1.  多客戶端支持

          2.  可將應(yīng)用組件部署到多臺(tái)服務(wù)器(JVM

          缺點(diǎn):

          1.增加了復(fù)雜度

          2.影響性能

          3.調(diào)試?yán)щy

          4.必須在EJB容器中運(yùn)行

          5.異常處理復(fù)雜

          6OO設(shè)計(jì)困難

          2.基于Web Service的分布式

           

          對(duì)非J2EE客戶端調(diào)用適用性好,無(wú)分布式調(diào)用,往往作為第一、第二架構(gòu)的變體。

          優(yōu)點(diǎn):

          1.  通用標(biāo)準(zhǔn),能支持更多客戶端類型

          2.  提供的Web service接口比RMI接口更好

          3.  Web service傳輸協(xié)議比RMI更友好

          缺點(diǎn):

          1.  性能差

          2.  需要作objectxml之間的轉(zhuǎn)換

          3.  相對(duì)于java client來(lái)說(shuō),性能也不好

           

           

          UI框架部分

           

          選擇UI的幾個(gè)決定性因素:

          1.  用戶的實(shí)際需求

          2.  項(xiàng)目的性能要求

          3.  當(dāng)前開(kāi)發(fā)人員技術(shù)水平

           

           

           

           

          J2EE框架設(shè)計(jì)幾個(gè)需要強(qiáng)調(diào)的觀點(diǎn)

           

          簡(jiǎn)單

          可維護(hù)性

          性能

          開(kāi)發(fā)效率

           

           

          J2EE框架設(shè)計(jì)通用法則

          1.  使用J2EE,而不是讓J2EE牽著鼻子走(因需而用,而不是因有而用)

          2.  萬(wàn)不得已不要使用EJB(謬論:把EJB視為J2EE核心)

          3.  萬(wàn)不得已不要采用分布式架構(gòu)

          4.  企業(yè)應(yīng)用不要僅僅局限于J2EE技術(shù)(業(yè)務(wù)知識(shí),.NET技術(shù))

          5.  J2EE不僅僅是一個(gè)規(guī)范

          6.  謹(jǐn)慎處理數(shù)據(jù)庫(kù)通用性,數(shù)據(jù)比J2EE應(yīng)用的壽命更長(zhǎng)

          7.  利用好JDBC(SQL)技術(shù)

          8.  不要忽略數(shù)據(jù)庫(kù)的能力

          9.  簡(jiǎn)單即是美

          10.有時(shí)候使用EJB的好處可能來(lái)自于無(wú)狀態(tài)Bean

          11.在項(xiàng)目啟動(dòng)初期就應(yīng)該考慮到性能問(wèn)題

          12.在設(shè)計(jì)的時(shí)候考慮應(yīng)用在集群環(huán)境下運(yùn)行的可能性

          13.好的J2EE設(shè)計(jì)來(lái)自于好的OO設(shè)計(jì)

          14.使用輔助類來(lái)隱藏底層API實(shí)現(xiàn)

          15.在web UI層采用MVC框架

           

           

          J2EE框架設(shè)計(jì)成則

          1.  底層設(shè)計(jì)必須著眼當(dāng)前可用規(guī)范而不是未來(lái)新規(guī)范

          2.  沒(méi)有針對(duì)實(shí)際需求的簡(jiǎn)單例程參考價(jià)值有限

          3.  對(duì)框架進(jìn)行詳盡的測(cè)試

          4.  對(duì)代碼進(jìn)行詳盡注釋

          5.  盡可能早的對(duì)風(fēng)險(xiǎn)加以解決

          6.  項(xiàng)目啟動(dòng)時(shí)就確定所采用的服務(wù)器

          7.  在項(xiàng)目早期實(shí)現(xiàn)自動(dòng)測(cè)試和構(gòu)建

          8.  在項(xiàng)目啟動(dòng)時(shí)雇傭J2EE設(shè)計(jì)專家

          9.  避免重復(fù)發(fā)明輪子

          10.統(tǒng)一設(shè)計(jì)和編碼風(fēng)格 

          posted on 2007-10-16 01:36 前方的路 閱讀(335) 評(píng)論(0)  編輯  收藏 所屬分類: 軟件架構(gòu)軟件思想
          主站蜘蛛池模板: 夹江县| 若尔盖县| 无锡市| 华安县| 富民县| 德昌县| 会理县| 阳东县| 阜南县| 长乐市| 策勒县| 衡山县| 砀山县| 衡水市| 康乐县| 云安县| 贺兰县| 琼海市| 杂多县| 崇仁县| 天津市| 社旗县| 宣武区| 乐安县| 镇巴县| 湾仔区| 邢台市| 高邮市| 定南县| 安丘市| 监利县| 新蔡县| 肥城市| 资溪县| 咸宁市| 图们市| 曲周县| 加查县| 深圳市| 抚宁县| 尼勒克县|