隨筆-55  評(píng)論-208  文章-0  trackbacks-0
          最近在新公司學(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來處理。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中,然后再頁面上讀取顯示。

          初學(xué)這個(gè)框架,看得是作者的英文文檔,首先得感覺是層次的抽象的有些細(xì),因?yàn)橐酝鲞^的項(xiàng)目中,render和handler,feature的代碼都是放在控制層來處理了(通常是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)問題是需要一點(diǎn)一點(diǎn)理解去掌握的。而且學(xué)習(xí)的代碼是一個(gè)完整的項(xiàng)目,這個(gè)完整的項(xiàng)目有一個(gè)問題就是,有幾十個(gè)模塊,模塊間的代碼有相互耦合的問題,反而造成了我閱讀代碼的困難。結(jié)果用了一個(gè)多禮拜的時(shí)間才算基本上手框架。
          總結(jié)問題,發(fā)現(xiàn)主要有兩個(gè):
          1、太過相信文檔,其實(shí)文檔只是一個(gè)大體框架的介紹。所以我應(yīng)該多和有經(jīng)驗(yàn)的開發(fā)者交流,并且要配合代碼具體細(xì)節(jié)
          2、一個(gè)框架應(yīng)該有一個(gè)簡單的清晰的demo,只涉及一個(gè)模塊,清晰,明確,這樣就不會(huì)再閱讀學(xué)習(xí)時(shí)陷入模塊邏輯和框架邏輯中。因?yàn)閺拇a中你很難分辨出哪些是框架邏輯,哪些是模塊邏輯。
          posted on 2007-03-31 12:41 rocket 閱讀(2100) 評(píng)論(4)  編輯  收藏

          評(píng)論:
          # re: 框架學(xué)習(xí)新體會(huì) 2007-04-01 15:32 | sunflower
          是不是這種框架
          調(diào)用時(shí):----------------------------------------------

          1.表現(xiàn)層->控制層->Service->Action->業(yè)務(wù)層
          Sevice(handler,feature,target)
          Render

          返回時(shí):----------------------------------------------
          1.控制層<-Action<-業(yè)務(wù)層
          2.控制層->Service->render->業(yè)務(wù)層
          3.表現(xiàn)層<-控制層<-Action(封裝RDO?)<-業(yè)務(wù)層<-持久層

          有幾個(gè)問題問問:
          1.這是SOA的框架么?
          2.每一層應(yīng)該是獨(dú)立的.特別是控制層,業(yè)務(wù)層,持久層并不受Action影響.
          對(duì)每一個(gè)服務(wù),只需配置一個(gè)Service就行,可插件式的應(yīng)用,之后Sevice通過從業(yè)務(wù)層得到的參數(shù)來使用RDO來封裝數(shù)據(jù).是不是數(shù)據(jù)模型都有特定的人封裝好了,你只是拿來拼湊層RDO?
          你只需要做Service層對(duì)吧.
          持久層應(yīng)該只調(diào)用一次,就是封撞RDO時(shí)調(diào)用.
          ---------------------------------------------------
          RDO以前沒聽過:
          RDO (Remote Data Objects) 遠(yuǎn)程數(shù)據(jù)對(duì)象是一個(gè)到 ODBC 的、面向?qū)ο蟮臄?shù)據(jù)訪問接口,它同易于使用的 DAO style組合在一起,提供了一個(gè)接口,形式上展示出所有 ODBC 的底層功能和靈活性。盡管 RDO 在很好地訪問 Jet 或 ISAM 數(shù)據(jù)庫方面受到限制,而且它只能通過現(xiàn)存的 ODBC 驅(qū)動(dòng)程序來訪問關(guān)系數(shù)據(jù)庫。但是,RDO 已被證明是許多 SQL Server、Oracle 以及其他大型關(guān)系數(shù)據(jù)庫開發(fā)者經(jīng)常選用的最佳接口。RDO 提供了用來訪問存儲(chǔ)過程和復(fù)雜結(jié)果集的更多和更復(fù)雜的對(duì)象、屬性,以及方法。   回復(fù)  更多評(píng)論
            
          # re: 框架學(xué)習(xí)新體會(huì)[未登錄] 2007-04-02 15:36 | rocket
          @sunflower
          rdo = render Data Object
          專門用于封裝頁面顯示數(shù)據(jù)的  回復(fù)  更多評(píng)論
            
          # re: 框架學(xué)習(xí)新體會(huì) 2007-04-05 19:19 | sunflower
          能不能解釋的稍微多點(diǎn)呢?例如框架  回復(fù)  更多評(píng)論
            
          # re: 框架學(xué)習(xí)新體會(huì) 2008-01-07 03:35 | javayuan
          service不就是業(yè)務(wù)層么?  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 平原县| 汾西县| 宾川县| 涟源市| 卓资县| 德化县| 武穴市| 莱芜市| 新野县| 友谊县| 南开区| 珠海市| 竹溪县| 黄骅市| 鹿邑县| 抚远县| 三都| 荥经县| 宿迁市| 紫云| 理塘县| 秦皇岛市| 祁阳县| 中阳县| 惠安县| 扶沟县| 龙胜| 巩义市| 溆浦县| 司法| 休宁县| 福清市| 清镇市| 湟源县| 通渭县| 都江堰市| 浏阳市| 晋江市| 辛集市| 德阳市| 蓝山县|