ROR

接触到ROR还是因为工作中用到了一款非常不错的系统redmine,一时兴起查阅了一些相关文档,对ROR这个开源框架感觉还好!

Ruby on Rails 的两大箴言:约定优于配置( Convetion over configuration )和 DRY(Don’t  repeated yourself) 造就了 Rails  的极高的 开发效率, 使 Rails 框架迅速风靡世界,现在可以说是红的发紫。
  Ruby on Rails 框架,是一个使 web 应用的开发、部署和维护变得更容易的框架, Rails 框架非常适合进行敏捷开发和基于测试驱动开发,因为整个框架的设计,就将测试放在了很高的位置,你每生成一个 Mode , Contorller 他都会自动在 test 文件夹下生成对应的测试类,并且 Rails 提供了一整套类似于 JUnit 的单元测试工具,同时提供了对 web 测试的功能(甚至可以深入到 Html 的标签进行测试),它提供的测试设施非常全面和易用,它可以让对数据库操作部分的各个测试用例彼此隔离,提供 Mock 对象( request , response , 使得 web 程序测试就象普通程序测试一样简单。
Rails ORM 做的相当的好用,虽然比 hiberate 的功能要弱一些,但使用 Ruby 语言的动态性动态的生成查询函数的功能用起来比起 Hibernate 爽多了,让你真正的脱离了对 sql 的低级操作( hibernate 引入 HQL ,宣称具有面向对象的查询语句,感觉有自欺欺人的感觉,我感觉存在的理由只是作为一个中介,方便根据不同的 sql 方言生成 sql 而已),而同时你也拥有直接操作 sql 的强大功能来实用复杂的场合,例如多表连接,只查询部分字段等。它让 Mode 继承 Active::Record , 使得的领域模型是胀血型的,更加面向对象,适合领域驱动的设计方法建模(使用 Hibernate  j2ee ,一般是贫血型的,只有属性,没有行为,有违面向对象的理念。实现充血型的模型相当困难,例如使用 AOP 什么的)。 Rails 只需要使用 has_many, belong_to,has_one,has_and_belongs_to_many 类似声明的方法
可以轻松指定表间关联。同时提供了 Acts As List ,Acts As Tree,  以及单表继承等高级功能。值得一提的是 Rails 的属性是虚的
直接绑定于表中的属性,这样当你修改数据库设计(如增加字段),同时会反映到 Mode 中。 ActiveRecord 的功能不止于此,
供的效验( validation )功能相当强大,你可以重载 ActiveRecord validate 方法,也可以使用效验的辅助方法( validates_format_of
, validate_uniqueness_of,validate_acceptance_of, validates_length_of 等),使用起来非常方便。同时 ActiveRecord 还提供了回调方法 before_destory,before_save,after_destory,after_save 等)和 Observer ,不需要 java使 Filter AOP 的复杂配置,便可以获得其强大的功能。
  ActionController 作为控制器,其功能就是根据请求调用 Action, Action 中执行业务方法,并转向适当的视图。 ActionController
提供了一种称为请求路由( Routing Requests )的方法来匹配 URL 请求 , 从而找到正确的 Controller action ,类似 j2ee 使用 xml 配置,但请求路由它只需要提供一套(或自己定制)路由匹配策略就可以处理所有的请求,比 j2ee 针对每一个 Action 请求 需要一个 mapping
简洁的多,同时也不失其强大的功能。 ActionController 也有类似于 jsp render( 类似 jsp forward) redirect_to ( 类似于jsp的redirect ),
同时提供了 Cookie Session ,其使用非常方便。 并且使用了 flash 方便的在一个或多个请求中传递信息。
ActionController 提供了过滤器( Filters )和效验( verification )。 Filter 提供了类似 Spring 框架 AOP 同样强大的功能(前置 / 后置 / 环绕  过滤器),你可以动态的增强一个方法,使用 Filter 我们可以轻松实现身份认证,日志等具有一个横切面性质的业务功能。
Rails 提供了 页面缓存, action 缓存,片段缓存,大大减少了重复操作导致的服务器资源和时间的耗费, 提高了性能。 同时提供了 缓存 实效策略 和清扫器以及基于时间的缓存实效策略,避免了手工管理缓存的困难。同时 Rails 还不甘 ActionController 现有的功能和
机制 Rails1.2 提供了 REST(Representions State Tranfer), REST 技术,使得只需要指名控制器和相应的资源,而不需要指名 Action
可以进行相应的操作。 REST 是基于 htpp 协议的一些动词 GET,POST,DELETE,PUT 来执行相应的操作的,它使得 URLs 简洁清晰,可以根据不同的请求给予不同的响应(响应可以是 .html,.xml,.js 等),代码相对更少,使用一个面向 CRUD 的控制器以及清晰的应用设计。他在 controller 中使用 response_to,  连接和表单使用新的 help method 以及在 routes.rb 里生成新的路由等新的特色。
ActiveView 提供了两种模板 rxml rhtml 模版,由于 ruby 语言的动态性,使得 ruby 语言嵌入 rhtml 中来控制页面逻辑以及输出具有原生的优势,不用像 jsp 需要提供表达式语言( EL )。使用 Helper 方法可以避免在模版视图中嵌入大量的代码(特别是业务代码),从而实现代码和表现的分离。 ActiveView 提供了大量的辅助方法来提供连接,生成表单,同时提供了分页的功能。 ActiveView 使用布局模版、局部页面模版,以及组件,使得大量的页面和局部页面可以被共享和重用,其 J2EE 框架至今还尚未有以实现易于重用模版的和先进的理念(特别是渲染技术, Structs Title ,JSF 的渲染还不错 , 但与之相比还相差甚远),局部模版技术与 rails 实现的 Ajax 技术搭配起来可以实现很酷的页面动态效果,同时对局部模版可以进行缓存来改善 web 性能。模版可以 方便 的访问 Controller 的实例变量和类变量,以及辅助方法,这一切都是 Controller 与页面模版之间的交互非常容易,同时页面之间可以传递参数也大大地增加页面之间的交互性。 同时 Rails 提供的对 Ajax 完好的集成, rails ajax 的封装使你只需要使用 ruby 代码就可以产生 web2.0 的很酷的效果,避免
使用 javascript 这个难以调试的东东,同时也避免了不少低级的操作, rails 在背后替你做了一切。
最后值得一提的是 rails1.2 提供的 Migration ,对控制软件版本,敏捷开发,数据库模型的演变等提供了非常方便的支持。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值