本博客不再更新

          本博客不再更新,請訪問http://blog.sina.com.cn/fulaoshi

          統(tǒng)計

          最新評論

          [導(dǎo)入]初窺Ruby on Rails

          ?昨天一時興起就和許老師去新華文軒買了兩本RoR的書,準(zhǔn)備這個寒假專供此道,如果順利的話,再用它做一個缺陷管理系統(tǒng)的demo出來。

          ?不過研究了兩天發(fā)現(xiàn),直接從RoR入手似乎不是很妥當(dāng),應(yīng)該先學(xué)好Ruby,接下來再Rails。不過書已經(jīng)買了,就硬著頭皮搞吧,還好下載了一本Programming Ruby第二版,遇到不懂的可以查閱。

          ?說說這兩天來(準(zhǔn)確的說是今天下午到晚上)對Rails這個基于Ruby框架的認識。

          ?首先它是基于MVC的,這個一點也不奇怪,那么就分開介紹吧

          ?控制器:

          ??前端控制器:因為和J2EE的實現(xiàn)機制不太一樣,所以前端控制器不向Struts中的ActionServlet那么明顯,初步估計是由public目錄下的dispatch.*組成的。雖然實現(xiàn)機制可能不同,但是做的事情大同小異。

          ??應(yīng)用控制器:類似于JSF中的action,一個應(yīng)用控制器中可以有多個行為(action)。按照Rails的命名規(guī)約,一個應(yīng)用控制器類必須以Controller結(jié)尾,其中的每一個public方法都是一個action。action中可以調(diào)用模型進行處理,處理完畢后默認跳轉(zhuǎn)到action同名的rhtml頁面(視圖),也可以用redirect_to方法跳轉(zhuǎn)到其他視圖。
          ??
          ??(注:我看的書中并沒有區(qū)分前端控制器,和應(yīng)用控制器,這里沿用了Struts中的叫法)

          ?模型:
          ??
          ??模型應(yīng)該負責(zé)提供數(shù)據(jù)、封裝業(yè)務(wù)邏輯、必要時還需要數(shù)據(jù)的持久化。先看看在J2EE中模型的實現(xiàn):
          ?
          ??方式1:EJB中的實體Bean
          ??優(yōu)點:數(shù)據(jù)、業(yè)務(wù)邏輯、持久化功能全部提供,代碼少
          ??缺點:持久化功能不靈活,導(dǎo)致一些業(yè)務(wù)邏輯難以優(yōu)雅的實現(xiàn)。需要大量配置文件

          ??方式2:JavaBean
          ??優(yōu)點:簡單
          ??缺點:大量重復(fù)的編碼

          ??方式3:Hibernate中的PO對象+DAO對象
          ??優(yōu)點:代碼少
          ??缺點:po和dao是分離的,導(dǎo)致“貧血類”,Hibernate自身對事物的管理比較弱。需要大量配置文件,映射對象關(guān)系時比較復(fù)雜。如加入Spring則會進一步增加代碼的復(fù)雜度

          ??可以看到,J2EE中各種模型實現(xiàn)都或多或少有自己的缺陷(其中我最看好的還是實體Bean,希望EJB 3.0能一轉(zhuǎn)2.0的頹勢)

          ??而在Rails中已經(jīng)使用了ORM,與Hibernate比這個ORM不需要大量的配置文件,只需要遵守命名規(guī)約,并在代碼中映射對象間的關(guān)系。更像EJB 3.0吧。

          ??Rails中模型的優(yōu)點在于將數(shù)據(jù)、業(yè)務(wù)邏輯、持久化功能放在一起了,并且借助于Ruby強大的繼承功能,你并不會覺得模型變得臃腫,甚至更加簡單。

          ??缺點嘛,自然就是剛學(xué)的時候有些摸不著頭腦,呵呵。

          ??據(jù)說Rails中模型還有一種實現(xiàn)方式,看到后幾章再說吧。

          ?視圖:
          ??視圖沒有什么好說的,雖然里面確實有一些新東西,比如類似于tiles的layout(布局),神奇般的獲取模型中的數(shù)據(jù),可以用于取代標(biāo)簽庫的helper等,不過這些特性并不至于令人瞠目結(jié)舌。

          ?總結(jié)一下,我覺得Rails也沒有什么特別神奇之處,當(dāng)然可能是因為我還剛?cè)腴T。目前為止最震撼我的是借助于ruby腳本,可以快速根據(jù)數(shù)據(jù)表生成應(yīng)用控制器、模型、視圖(Rails的術(shù)語叫scaffold【骨架】),在很短的時間內(nèi)完成一個CRUD的界面。但是J2EE下的AppFuse也能實現(xiàn)這個功能。

          ?直到現(xiàn)在我還是固執(zhí)的認為Ruby的快速開發(fā)就在于它提供了更多的api和更多的復(fù)雜語法。當(dāng)然,這是一種成見,希望把這本書看完后會對Ruby和Rails有更深的了解


          文章來源:http://blog.sina.com.cn/u/4a5ca0240100075p

          posted on 2007-03-21 23:30 本博客不再更新 閱讀(385) 評論(1)  編輯  收藏

          評論

          # re: [導(dǎo)入]初窺Ruby on Rails 2008-05-31 20:16 枯の靈

          呵呵

          最近也在看這個東西

          路過一下  回復(fù)  更多評論   


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 开江县| 成武县| 桦甸市| 三明市| 岢岚县| 太湖县| 博罗县| 丘北县| 新营市| 门头沟区| 绍兴县| 邵武市| 肇源县| 德清县| 汾阳市| 华亭县| 瓮安县| 隆昌县| 古田县| 绥德县| 弋阳县| 台南市| 巫溪县| 淮南市| 安西县| 泗洪县| 文水县| 济阳县| 绵竹市| 右玉县| 南丰县| 咸丰县| 柳河县| 沂南县| 康定县| 云阳县| 天门市| 衡阳县| 浦县| 巨野县| 泰和县|