最近項(xiàng)目組要求使用普元EOS進(jìn)行項(xiàng)目開發(fā),使用了兩個(gè)月左右,雖然說有一些心得(這個(gè)以后會(huì)寫出來),但更多是看到了不足的地方,在這里就討論一下一個(gè)成熟的應(yīng)用框架到底應(yīng)該有哪些因素。
底層技術(shù):
Application Framework(下稱應(yīng)用框架)是為解決問題而生的,無論是基于JAVA、C++、Ruby等等語言,都必須有基礎(chǔ)技術(shù)的支持。如JAVA就有經(jīng)典的Struts+Spring+Hibernate的組合,因此,一個(gè)成熟的應(yīng)用框架,必須擁有完善的MVC框架,以及完整的業(yè)務(wù)組件管理容器,還有一個(gè)成熟的數(shù)據(jù)訪問框架。這個(gè)是一切的基礎(chǔ)。
權(quán)限管理:
擁有一個(gè)成熟基礎(chǔ)權(quán)限架構(gòu)能夠?yàn)閼?yīng)用框架增色不少。如果能夠和框架本身更好地融合,這樣更好。其實(shí)目前有很多實(shí)現(xiàn)是俄可以借鑒的,如:ACEGI和Spring。
UI:
標(biāo)簽已經(jīng)非常流行,擁有完善的標(biāo)簽庫是必不可少的,Struts是個(gè)很好的典范。
Ajax大行其道,如果沒有整合一些方便易用的AJAX控件,估計(jì)也算不上是一個(gè)好框架。
另外還有類似于Freemarker、Velocity之類的簡(jiǎn)化UI開發(fā)的好東東,整合一兩個(gè),對(duì)于減少開發(fā)、提高維護(hù)性有很大幫助。
開發(fā)工具:
提供敏捷快速的開發(fā)工具是一個(gè)成熟應(yīng)用框架所不可或缺的。使用一個(gè)成熟的應(yīng)用框架的開發(fā)工具進(jìn)行開發(fā),可以讓開發(fā)者最大程度減少對(duì)于技術(shù)上的瓶頸,讓開發(fā)者很輕松就可以完成高質(zhì)量的代碼,剩下的精力可以用于專注于業(yè)務(wù)等其它方面。
另外還有像:?jiǎn)卧獪y(cè)試、應(yīng)用部署等等方面,都是必不可少的一部分。(PS:我是非常痛恨維護(hù)幾百行ANT的build.xml代碼的人)
這里不得不稱贊一下普元,普元提供的開發(fā)環(huán)境和它自身的底層技術(shù)融合的非常好,對(duì)于開發(fā)者而言,是非常方便的,可以不需要很多的培訓(xùn)就可以使用IDE開發(fā)出完整的應(yīng)用。而且測(cè)試和部署都很方便。
代碼生成器:
其實(shí)這個(gè)應(yīng)該和開發(fā)工具放在一起,但是因?yàn)楸容^重要,所以單獨(dú)提出來說。
一個(gè)好的代碼生成器可以省去開發(fā)人員很多不必要的麻煩,能夠非常大地提高開發(fā)效率。普元的代碼生成器是個(gè)不錯(cuò)的典范。
我們公司自己也有一個(gè)JOP的應(yīng)用框架,但非常簡(jiǎn)陋,和普元的設(shè)計(jì)思想不可同日而語。呵呵~~有點(diǎn)扯遠(yuǎn)了,但能夠看得出,代碼生成器對(duì)于應(yīng)用框架是必不可少的。
協(xié)同開發(fā):
整合一個(gè)好的協(xié)同開發(fā)和版本管理工具,能夠最大程度地降低溝通成本。除了能夠支持類似SVN或VSS之類的代碼版本管理工具之外,還應(yīng)該融合進(jìn)類似Visual Studio Team的任務(wù)管理和缺陷管理工具。最好擁有一個(gè)可以進(jìn)行自我積累的知識(shí)庫的實(shí)現(xiàn)。WIKI是個(gè)不錯(cuò)的主意。
設(shè)計(jì)器:
我提出這個(gè)是因?yàn)榭吹搅薎BM的RUP,擁有一個(gè)能夠從設(shè)計(jì)到代碼實(shí)現(xiàn)乃至后面的測(cè)試這樣一個(gè)全流程開發(fā)工具,一直是IT人員的一個(gè)美好夢(mèng)想。
一個(gè)好的設(shè)計(jì)器,可以很輕松地在設(shè)計(jì)圖和代碼之間相互轉(zhuǎn)換,對(duì)于需求變更,設(shè)計(jì)管理、甚至項(xiàng)目后期的文檔都有很重要的意義。
這里又要提到普元,普元在這方面很聰明,走了一條不同的路,它把代碼變成一個(gè)個(gè)圖標(biāo)時(shí),本身就實(shí)現(xiàn)了對(duì)于設(shè)計(jì)圖和代碼之間互轉(zhuǎn)關(guān)系。(當(dāng)然,實(shí)現(xiàn)的方式有點(diǎn)土,而且沒有辦法支持標(biāo)準(zhǔn)的UML)
運(yùn)行容器:
大家可能覺得奇怪,容器為什么要單獨(dú)提出來說,很多JAVA開發(fā)者都會(huì)說,只有遵循JAVA標(biāo)準(zhǔn)就可以啦~。其實(shí)不然,一個(gè)成熟的應(yīng)用框架當(dāng)然要考慮其兼容性,但是有時(shí)候,過多考慮兼容性往往會(huì)犧牲效率。事實(shí)上,很多應(yīng)用框架被開發(fā)出來,都是有一定的局限性的使用場(chǎng)景,針對(duì)使用場(chǎng)景的環(huán)境進(jìn)行優(yōu)化,絕對(duì)比使用通用的方法效率要高的多。如我們公司的移動(dòng)項(xiàng)目使用的是WebSphere,我們的框架就有一個(gè)針對(duì)WebSphere優(yōu)化的版本,但同時(shí)也存在一個(gè)通用版本。
當(dāng)然還有其它方面也可以引用這種思路,比如使用Oracle自帶的一些JDBC類,其效率就比使用JAVA標(biāo)準(zhǔn)的JDBC類要高得多。
其實(shí)應(yīng)用框架被創(chuàng)造出來的目的就是快速、高效、低成本地解決問題,這個(gè)大家都知道,但是何謂“成熟”,估計(jì)100個(gè)人應(yīng)該有100個(gè)答案,這里我的理解就是開發(fā)快捷、較低的學(xué)習(xí)成本、運(yùn)行穩(wěn)定,就是一個(gè)成熟的應(yīng)用框架。
PS:上面好像說了一些不少普元的好話,大家千萬不要以為我是普元的“托”,晚點(diǎn)我再寫遍罵它的文章吧~~呵呵~~。其實(shí)我更喜歡SpringSide,但是除了“底層技術(shù)”這塊之外,在其它方面還有很長的路要走,希望江南白衣兄能夠堅(jiān)持下去。