重/輕量:其實(shí)是使用難易程度,從根本上說(shuō),重/輕量應(yīng)該和可伸縮性不矛盾的,特別是EJB 3.0推出以后,這個(gè)問(wèn)題應(yīng)該得到比較好的解決。
但是,在目前情況下,編寫(xiě)一個(gè)JavaBeans要比編寫(xiě)一個(gè)EJB容易多,那么,是重/輕量還是可伸縮性應(yīng)該成為系統(tǒng)架構(gòu)的主要依據(jù)呢?
在這個(gè)問(wèn)題背后,還隱藏了目前在開(kāi)源領(lǐng)域兩個(gè)架構(gòu)技術(shù)選擇:
1. 重量:基于JBoss/EJB的完整J2EE系統(tǒng)架構(gòu)
(具有可伸縮性,目前不易于學(xué)習(xí))
2. 輕量:基于Tomcat的Struts+Hibernate/Spring+Hibernate (目前無(wú)太大可伸縮性,但是易于學(xué)習(xí)使用)
因?yàn)檩p量解決方案易于學(xué)習(xí)新技術(shù),容易使用,選中率比較高。但是讓人產(chǎn)生對(duì)系統(tǒng)的可伸縮性擔(dān)憂(yōu)。鑒于這種情況,我認(rèn)為有必要強(qiáng)調(diào)一下可伸縮性的重要性,切不能因?yàn)橐M(jìn)新的設(shè)計(jì)思想和技術(shù),而盲目地采用一個(gè)無(wú)可伸縮性的設(shè)計(jì)方案。
其實(shí),"輕量"應(yīng)該是一個(gè)中性詞,但是因?yàn)榇罅啃碌脑O(shè)計(jì)思想比較容易通過(guò)輕量方案獲得成型軟件,如(Spring/Naning/Hibernate)等,逐漸的"輕量"好像變成了一個(gè)褒義詞。 如果從可伸縮性的標(biāo)準(zhǔn)看,輕量還可能是一個(gè)貶義詞,輕量意味著喪失重量系統(tǒng)中的分布式網(wǎng)絡(luò)計(jì)算的設(shè)計(jì)考量,那么可伸縮性就要打問(wèn)號(hào)。
從這次JavaOne大會(huì)以及從長(zhǎng)遠(yuǎn)來(lái)看,隨著EJB 3.0中間件輕量化、SOA架構(gòu)理念普及,輕量/重量的區(qū)別已經(jīng)模糊,如果還是以輕量/重量作為架構(gòu)選擇的標(biāo)準(zhǔn),甚至標(biāo)榜自己的系統(tǒng),無(wú)疑是不明智的。
可伸縮性應(yīng)該依然是實(shí)用企業(yè)系統(tǒng)架構(gòu)的主選,可伸縮性是站在軟件公司的客戶(hù)企業(yè)立場(chǎng),為這些客戶(hù)企業(yè)考慮的,但是他們經(jīng)常因?yàn)楸徽J(rèn)為是外行,擋在了軟件系統(tǒng)架構(gòu)選擇的門(mén)外。可伸縮性:所謂可伸縮性,是指在小型規(guī)模單臺(tái)服務(wù)器情況下,應(yīng)用系統(tǒng)可以良好運(yùn)轉(zhuǎn),系統(tǒng)的訪(fǎng)問(wèn)量或功能增加后,整個(gè)系統(tǒng)只需通過(guò)增加服務(wù)器硬件就可以實(shí)現(xiàn)性能擴(kuò)展,無(wú)需修改太多軟件。對(duì)于可伸縮性平臺(tái)(如JBoss)來(lái)說(shuō),理論上,沒(méi)有最大負(fù)載或最多在線(xiàn)人數(shù)這樣的概念。