本博客不再更新

本博客不再更新,请访问http://blog.sina.com.cn/fulaoshi

统计

最新评论

[导入]初窥Ruby on Rails

 昨天一时兴起就和许老师去新华文轩买了两本RoR的书,准备这个寒假专供此道,如果顺利的话,再用它做一个缺陷管理系统的demo出来。

 不过研究了两天发现,直接从RoR入手似乎不是很妥当,应该先学好Ruby,接下来再Rails。不过书已经买了,就硬着头皮搞吧,还好下载了一本Programming Ruby第二版,遇到不懂的可以查阅。

 说说这两天来(准确的说是今天下午到晚上)对Rails这个基于Ruby框架的认识。

 首先它是基于MVC的,这个一点也不奇怪,那么就分开介绍吧

 控制器:

  前端控制器:因为和J2EE的实现机制不太一样,所以前端控制器不向Struts中的ActionServlet那么明显,初步估计是由public目录下的dispatch.*组成的。虽然实现机制可能不同,但是做的事情大同小异。

  应用控制器:类似于JSF中的action,一个应用控制器中可以有多个行为(action)。按照Rails的命名规约,一个应用控制器类必须以Controller结尾,其中的每一个public方法都是一个action。action中可以调用模型进行处理,处理完毕后默认跳转到action同名的rhtml页面(视图),也可以用redirect_to方法跳转到其他视图。
  
  (注:我看的书中并没有区分前端控制器,和应用控制器,这里沿用了Struts中的叫法)

 模型:
  
  模型应该负责提供数据、封装业务逻辑、必要时还需要数据的持久化。先看看在J2EE中模型的实现:
 
  方式1:EJB中的实体Bean
  优点:数据、业务逻辑、持久化功能全部提供,代码少
  缺点:持久化功能不灵活,导致一些业务逻辑难以优雅的实现。需要大量配置文件

  方式2:JavaBean
  优点:简单
  缺点:大量重复的编码

  方式3:Hibernate中的PO对象+DAO对象
  优点:代码少
  缺点:po和dao是分离的,导致“贫血类”,Hibernate自身对事物的管理比较弱。需要大量配置文件,映射对象关系时比较复杂。如加入Spring则会进一步增加代码的复杂度

  可以看到,J2EE中各种模型实现都或多或少有自己的缺陷(其中我最看好的还是实体Bean,希望EJB 3.0能一转2.0的颓势)

  而在Rails中已经使用了ORM,与Hibernate比这个ORM不需要大量的配置文件,只需要遵守命名规约,并在代码中映射对象间的关系。更像EJB 3.0吧。

  Rails中模型的优点在于将数据、业务逻辑、持久化功能放在一起了,并且借助于Ruby强大的继承功能,你并不会觉得模型变得臃肿,甚至更加简单。

  缺点嘛,自然就是刚学的时候有些摸不着头脑,呵呵。

  据说Rails中模型还有一种实现方式,看到后几章再说吧。

 视图:
  视图没有什么好说的,虽然里面确实有一些新东西,比如类似于tiles的layout(布局),神奇般的获取模型中的数据,可以用于取代标签库的helper等,不过这些特性并不至于令人瞠目结舌。

 总结一下,我觉得Rails也没有什么特别神奇之处,当然可能是因为我还刚入门。目前为止最震撼我的是借助于ruby脚本,可以快速根据数据表生成应用控制器、模型、视图(Rails的术语叫scaffold【骨架】),在很短的时间内完成一个CRUD的界面。但是J2EE下的AppFuse也能实现这个功能。

 直到现在我还是固执的认为Ruby的快速开发就在于它提供了更多的api和更多的复杂语法。当然,这是一种成见,希望把这本书看完后会对Ruby和Rails有更深的了解


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

posted on 2007-03-21 23:30 本博客不再更新 阅读(381) 评论(1)  编辑  收藏

评论

# re: [导入]初窥Ruby on Rails 2008-05-31 20:16 枯の灵

呵呵

最近也在看这个东西

路过一下  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问