部功能。
解決方案:
學(xué)習(xí)J2EE的關(guān)鍵組件,并且了解它們的優(yōu)缺點(diǎn),依次用它們替代每一個(gè)服務(wù);“知識就是力量”在這里是行之有效的。
備注:
只有知識能夠彌補(bǔ)這些問題。好的Java開發(fā)者會成為好的EJB開發(fā)者,此后也應(yīng)逐漸成為J2EE得道高手。Java和J2EE知識掌握得越多,設(shè)計(jì)和開發(fā)工作就會越出色。在設(shè)計(jì)階段一切都會有條不紊。
風(fēng)險(xiǎn)2: 過度設(shè)計(jì)(Over-engineering) (采用 EJB或者不采用EJB)
項(xiàng)目階段:
設(shè)計(jì)
影響的項(xiàng)目階段:
開發(fā)
對系統(tǒng)的影響:
維護(hù)、擴(kuò)展性、性能
癥狀:
過于龐大的EJB
開發(fā)者無法解釋EJB做什么,以及其間的聯(lián)系
無法重復(fù)使用的EJB、組件或者服務(wù)
EJB啟動(dòng)了新的事務(wù),而該事務(wù)本該由一個(gè)已存在的EJB啟動(dòng)
為了安全,把數(shù)據(jù)分離級別定得太高
解決方案:
過度工程化的解決之道直接來自于極限編程 (XP)方法:用最小的設(shè)計(jì)和編程來滿足需求,除此之外別無它干。除非你需要明確知道今后可能的需求,如將來的負(fù)載要求,或者系統(tǒng)在最高負(fù)載下的表現(xiàn),否則大可不必為系統(tǒng)將來的情況做太多考慮或猜測。另外,J2EE平臺已經(jīng)定義了可伸縮性及出錯(cuò)恢復(fù)等特性,可以讓服務(wù)器系統(tǒng)為你進(jìn)行處理。
在最小的系統(tǒng)中,只包含一個(gè)個(gè)小組件,這些組件只做一件事,只要把這些要求做到的進(jìn)行實(shí)現(xiàn),系統(tǒng)穩(wěn)定性就已經(jīng)得到了提高,而且,你的系統(tǒng)的可維護(hù)性會變得很強(qiáng),在未來要增加功能以滿足新的需求也將變得容易。
備注:
除了上面所列方案之外,可以推行設(shè)計(jì)模式 -- 它們可以顯著地改進(jìn)你的系統(tǒng)設(shè)計(jì)。EJB模型本身也廣泛使用了設(shè)計(jì)模式。例如,每個(gè)EJB所帶的Home 接口就是Finder和Factory模式的實(shí)例。EJB的remote接口扮演了一種實(shí)際bean實(shí)現(xiàn)的代理,并且對于提供容器的能力也是至關(guān)重要的,這些容器截取調(diào)用信號并提供諸如透明(transparent)負(fù)載均衡的服務(wù)。忽視設(shè)計(jì)模式也是危險(xiǎn)的一部分。
我常提到要反對的另外一種危險(xiǎn)是:僅僅是為了使用EJB而使用EJB。在你的應(yīng)用中的某一部分可能并不需要EJB,甚至你的整個(gè)應(yīng)用都不需要。這是過度工程化所走的極端,而且我確實(shí)也目睹了一些良好的servlet和JavaBean應(yīng)用被重構(gòu)為EJB,而這樣做并沒有很好的技術(shù)上的理由。
風(fēng)險(xiǎn)3: 沒有將業(yè)務(wù)規(guī)則和邏輯表現(xiàn)形式相分離
項(xiàng)目階段:
設(shè)計(jì)
影響的項(xiàng)目階段:
開發(fā)
對系統(tǒng)的影響:
維護(hù)、擴(kuò)展性、性能
癥狀:
過于龐大、沒有邊際的JSP程序
在業(yè)務(wù)邏輯改變的時(shí)候必須修改JSP
在要求改變界面顯示的時(shí)候需要修改并重新配置EJB和其它后臺組件
規(guī)避方案:
J2EE平臺使你有機(jī)會將表示邏輯和導(dǎo)航控制相分離,進(jìn)而與業(yè)務(wù)規(guī)則相分離。這被稱為模式2結(jié)構(gòu)。
備注:
可以使用具有一致性的設(shè)計(jì)來進(jìn)行用戶界面框架的連接。(例如可以使用taglib),這將幫助你避免邏輯分離的問題。有許多現(xiàn)成的好的方法可供選擇。對每一個(gè)分別進(jìn)行評估,然后采用最合適的框架。
風(fēng)險(xiǎn)4: 沒有在開發(fā)環(huán)境中進(jìn)行適當(dāng)?shù)呐渲?/STRONG>
項(xiàng)目階段:
開發(fā)
影響的項(xiàng)目階段:
穩(wěn)定化、并發(fā)、成熟期
對系統(tǒng)的影響:
你的權(quán)衡
癥狀:
經(jīng)過多日或數(shù)周的時(shí)間才能過渡到成熟系統(tǒng)
風(fēng)險(xiǎn)存在與過渡期,帶有很多不確定性,有些主要的功能場景沒有被測試