最近在新公司學(xué)習(xí)一個(gè)新框架:UMA,是Cloverworxs的,不是開源項(xiàng)目,也不是商業(yè)項(xiàng)目,所以google上是找不到的
這個(gè)框架是老美設(shè)計(jì),感覺他們?cè)谶壿嫷某橄笊瞎Φ赘鼜?qiáng)一些,這個(gè)應(yīng)該和軟件開發(fā)的大環(huán)境經(jīng)驗(yàn)積累有關(guān)系吧。
首先先他把一個(gè)request發(fā)給controller,controller根據(jù)service(service是使用spring加載的,主要用于封裝handler和target)把請(qǐng)求封裝后發(fā)給handler,handler根據(jù)請(qǐng)求參數(shù)找到fenture,而feature則根據(jù)請(qǐng)求參數(shù)交給具體action來(lái)處理。action主要就是調(diào)用業(yè)務(wù)模型層的接口了。然后action處理完之后會(huì)返回到controller,controller根據(jù)service調(diào)用target,target則調(diào)用配置的render(可能多個(gè)),然后rende從業(yè)務(wù)模型層的接口中取回?cái)?shù)據(jù)并進(jìn)行顯示準(zhǔn)備,最后把數(shù)據(jù)封裝到一個(gè)RDO中,然后把RDO放置到attribute中,然后再頁(yè)面上讀取顯示。
初學(xué)這個(gè)框架,看得是作者的英文文檔,首先得感覺是層次的抽象的有些細(xì),因?yàn)橐酝鲞^(guò)的項(xiàng)目中,render和handler,feature的代碼都是放在控制層來(lái)處理了(通常是struts的action)。但是這種詳細(xì)層次也能感覺到的好處就是,當(dāng)某一層次要變動(dòng)時(shí)不需要到action中去找變動(dòng)代碼,而且當(dāng)出于某種考慮要針對(duì)于某一層進(jìn)行統(tǒng)一處理(如安全性處理)時(shí)就比較方便了。
看完文檔覺得對(duì)框架已經(jīng)有了一個(gè)深入的認(rèn)識(shí),開發(fā)時(shí)應(yīng)該比較快上手了吧,但是實(shí)踐中卻發(fā)現(xiàn),在每一層的實(shí)現(xiàn)代碼中由于框架引入了很多的完善特性,所以每一層的代碼有很多細(xì)節(jié)的實(shí)現(xiàn)問(wèn)題是需要一點(diǎn)一點(diǎn)理解去掌握的。而且學(xué)習(xí)的代碼是一個(gè)完整的項(xiàng)目,這個(gè)完整的項(xiàng)目有一個(gè)問(wèn)題就是,有幾十個(gè)模塊,模塊間的代碼有相互耦合的問(wèn)題,反而造成了我閱讀代碼的困難。結(jié)果用了一個(gè)多禮拜的時(shí)間才算基本上手框架。
總結(jié)問(wèn)題,發(fā)現(xiàn)主要有兩個(gè):
1、太過(guò)相信文檔,其實(shí)文檔只是一個(gè)大體框架的介紹。所以我應(yīng)該多和有經(jīng)驗(yàn)的開發(fā)者交流,并且要配合代碼具體細(xì)節(jié)
2、一個(gè)框架應(yīng)該有一個(gè)簡(jiǎn)單的清晰的demo,只涉及一個(gè)模塊,清晰,明確,這樣就不會(huì)再閱讀學(xué)習(xí)時(shí)陷入模塊邏輯和框架邏輯中。因?yàn)閺拇a中你很難分辨出哪些是框架邏輯,哪些是模塊邏輯。
posted on 2007-03-31 12:41
rocket 閱讀(2099)
評(píng)論(4) 編輯 收藏