雖然,我們一直強(qiáng)調(diào)整體大于單個(gè)的總和,但是如何將單個(gè)“個(gè)體”正確的組合成發(fā)揮更大效應(yīng)的“整體”卻并非易事。因?yàn)檫@些單獨(dú)的框架都由不同的團(tuán)隊(duì)開(kāi)發(fā),框架與框架之間存在天然的阻抗,這種框架和框架之間的“代溝”需要額外配置和編碼才能彌合。
每個(gè)框架都擁有自己的配置文件,框架的整合經(jīng)常帶來(lái)配置的災(zāi)難,如將Spring和Struts整合時(shí),不僅Struts本身的配置文件一個(gè)不能少,在Spring中還需要每個(gè)Action提供配置信息,而且兩者需要遵守一定的契約。
相互搭配的框架和框架之間經(jīng)常會(huì)出現(xiàn)相似的或重復(fù)的功能,如何取舍,如何使用往往讓開(kāi)發(fā)者們?yōu)殡y。如Spring本身提供了AOP方法返回結(jié)果的緩存功能,而Hibernate本身也提供二級(jí)緩存,究竟兩者都使用呢,還是擇一而從?往往中間又會(huì)引出很多爭(zhēng)論。 mda.com
框架整合的問(wèn)題已經(jīng)日益突出,我們可以在各開(kāi)源或社區(qū)發(fā)現(xiàn)大量有關(guān)討論的主題。
目前也出現(xiàn)了一些試圖解決的框架整合問(wèn)題的開(kāi)源項(xiàng)目,如國(guó)外的AppFuse,國(guó)內(nèi)的SpringSide,為框架的整合提供了專業(yè)的指導(dǎo)。但是并沒(méi)有很好的解決現(xiàn)實(shí)開(kāi)發(fā)中的實(shí)際需要。這些整合框架為了增加通用性,網(wǎng)都撒得太大,導(dǎo)致整合框架本身象一個(gè)龐然大物,讓人望而生畏,定制性和靈巧性上都存在不足,降低了它們的實(shí)用性,所以這些整合性的開(kāi)源項(xiàng)目往往降格為指導(dǎo)性的實(shí)例。
升級(jí)的困擾
活躍的框架每天都在升級(jí)改造,豐富功能。其次由于開(kāi)源框架在一定程度上存在隨意性,往往導(dǎo)致框架在實(shí)際使用后,發(fā)現(xiàn)大量隱含的Bug,所以有時(shí)對(duì)某個(gè)框架的升級(jí)變得不可避免。開(kāi)源框架比之Sun正規(guī)的規(guī)范有著更加靈活的升級(jí)方式,高低版本不兼容的問(wèn)題已經(jīng)成為司空見(jiàn)慣的事情。如著名的Hibernate,其3.0版本和2.0版本的包名都發(fā)生了徹底的變化,剛發(fā)布的Acegi和低版本也存在很大的差異,無(wú)法兼容。
一個(gè)整合性的框架由多個(gè)出自于不同團(tuán)隊(duì)的框架組成,整合框架在這些組合框架之上高位運(yùn)行,底層框架的升級(jí)變化就造成了組合框架水漲船高的局面,整合框架脆弱的穩(wěn)定性很容易被打破。
組合框架的升級(jí)還直接帶來(lái)了開(kāi)發(fā)團(tuán)隊(duì)學(xué)習(xí)的壓力,為了熟悉框架新功能和改進(jìn),在開(kāi)發(fā)工作之余,他們不得不努力壓榨自己的業(yè)余時(shí)間不斷地充電學(xué)習(xí)?偸悄硞(gè)框架新功能學(xué)習(xí)還未完成,另一個(gè)框架的新版本又在一陣歡呼聲中閃亮登場(chǎng),讓開(kāi)發(fā)人員發(fā)現(xiàn)自己所有的努力只是一場(chǎng)騎牛追馬游戲。
3、開(kāi)發(fā)者如何走出迷局
框架的爆炸性增長(zhǎng)和技術(shù)更替一日千里的速度,讓剛剛從傳統(tǒng)J2EE迷局中走出來(lái)的開(kāi)發(fā)者重新墮入了新的困境之中。有許多切身體驗(yàn)的開(kāi)發(fā)者在網(wǎng)上大倒苦水,甚至有許多聲音在吶喊,希望重新回到JSP+JavaBean+JDBC那個(gè)純真的年代中去。
框架的們本想還軟件開(kāi)發(fā)一個(gè)清新美滿的世界,不想個(gè)體性的良性企盼變成了一種整體性的混亂紛爭(zhēng)。在紛繁復(fù)雜的開(kāi)源世界如何走出迷局和困境,把握自己技術(shù)航船的方向,是每個(gè)開(kāi)發(fā)者們冥思遐想的事情。
重點(diǎn)學(xué)習(xí) 觸類旁通
每個(gè)人的時(shí)間是有限的,對(duì)于周期緊,進(jìn)度急,加班趕的開(kāi)發(fā)者來(lái)說(shuō)更加如此,使得開(kāi)發(fā)者不可能 “識(shí)遍天下字,讀盡人間書(shū)”逐個(gè)學(xué)習(xí)框架。選擇好適合自己、適合項(xiàng)目的框架進(jìn)行重點(diǎn)學(xué)習(xí)尤為重要。不但要掌握技術(shù)細(xì)節(jié),更要理解框架的原理和思想,這樣在接觸相關(guān)框架時(shí),我們才能觸類旁通,慧眼識(shí)真。
如果你深入理解了Struts框架的MVC的原理和思想,在接觸Tapestry,Spring MVC等框架時(shí),你會(huì)發(fā)現(xiàn)兩者只是形上的區(qū)別,而非質(zhì)上的差異,即使因現(xiàn)實(shí)需要確實(shí)要轉(zhuǎn)換框架時(shí),也可以輕松平滑地過(guò)渡。
轉(zhuǎn)帖于:軟件水平考試_考試吧
版權(quán)聲明 --------------------------------------------------------------------------------------
如果
軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系

,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本
軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。