(转)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 ,对控制软件版本,敏捷开发,数据库模型的演变等提供了非常方便的支持。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页