论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
Ruby On Rails与Jdon Framework架构比较
 作者:佚名     2007-3-14 17:34:16        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

  本文试图比较同属快速开发性质的Ruby on Rails(以下简称RoR)和Jdon Framework(以下简称JF)在架构上异同,供大家在实际架构选择中比较。

  RoR 是一个使用Ruby语言写就的Web应用框架,Ruby语言是类似Python, Smalltalk, PHP和Perl的动态类型语言。从新特点层面看,Ruby on Rails并没有提供比其他已经存在的Web应用框架新的东西,它的唯一特点就是快速开发。RoR大概诞生于2004年6月份。

  JF是使用Java语言编写的、基于Ioc/AOP微容器的快速开发工具。JF是基于JdonSD构件库增删改查框架基础上发展起来的,1.0版本是在2004年12月底完成。当时推出时很难定位,时至今日,它应该是Ruby on Rails、Spring和JBoss容器三个概念的一个中间体。属于域驱动开发框架(DDDD:omain Driven Development framework )。

  JF虽是笔者操作完成,其实它是国人网络结晶的开源产物,很多需求和思想都来自Jdon社区热情参与者,看到很多初学者总是为简单和灵活做痛苦选择,为了写一个简单系统,要么走入Jsp+JavaBeans误区,要么被复杂技术配置缠身,忘记业务本职工作。JF推出后,道友提出各种建议甚至猛烈批判,这些都形成了JF发展动力,促进JF完善。从用户出发的简易之道使JF的起点和立意一下和RoR这样国外产品走到了一起,下面我们详细进行一下两者架构比较。

语言之争

  RoR代表的是动态类型语言派别;而Java是一种静态类型语言,当初Java刚刚诞生时,这种两种类型派别之争曾经发生在Java和Smalltalk之间,后来现实选择了Java这样静态类型语言,关键原因时动态类型语言在编程时难以找出其一些潜在的语言Bug。

  但是,随着软件工程中单元测试的重视,动态类型语言+单元测试的结合克服了以上缺憾,从而使得RoR这样得动态类型语言重新东山再起。

  促成RoR受到敏捷工程派别的领域专家(如Martin Fowler)推崇另外一个原因是,它被认为是一种domain-specific languages(DSL)实现,DSL是一种专门供领域建模专家(也就是系统分析师)使用的语言,这些领域专家不同于程序高手,他们有一套自己认知世界和表达世界的思维和方式(如UML),因此,他们不感兴趣于软件设计细节,希望软件能够按照他们分析设计的结果去运行和执行就可以了。

  其实,DSL并不是一个全新理念,它已经在我们软件领域中反复出现,例如:我们很多人是关系数据库领域专家,所以,尽管由O/R Mapping这样工具出现,但是并没有改变这些领域专家表达方式,他们还是使用SQL等严谨的数学思维来实现他们的表达方式。

  DSL概念非常好,但是是否有必要重新搞一套DSL语言则涉及很多方面的问题,新的语言总会在实践中有新的陷阱,Java经过十多年发展,成熟和发展是其特点。

  当然,别以为RoR顶着DSL新名词就是一个非常好的东西,对其本质微词已经不绝于耳,有人认为它实质不过就是1994的Visual FoxPro(Ruby on Rails is a Bloody Square Turd ),提出该观点的作者认为: 为什么我们在一个没有重构以及调试支持的编码环境中工作?为什么还要重覆以前的痛苦呢?如果你确实喜欢RoR的ActiveRecord,为什么不用.NET呢?RoR 不是开发Web应用平台, RoR is a cult(RoR是宗教崇拜,笔者注:大概因为是因为所谓大师级的人推荐原因).

  无论如何,让我们抛开争执,通过比较看看RoR一些特点。

多层架构

  现在多层架构已经深入人心,多层主要是指表现层MVC、业务层和持久层多层分离的体系,由于Java是一个技术自由选择的世界,因此,每个层面都有不同的具体框架技术供选择, 提供选择是一种好事,但是又可能是一种坏事,需要应用者花费精力学习和研究,这非常类似我们购物。

  在微软世界,由于各层框架技术几乎都是由一家提供的,所以,.NET就索性将这些框架直接集成 到IDE开发工具,对于有的程序员感觉.NET用起来很快,将开发工具和框架混合成一体,但这是以绑定为代价的,甚至有程序员反感Java世界IDE+框架的开发方式,认为在开发工具之外还会多一个框架,并且认为违背KISS(keep it simple and stupid)原则,其实不然,关键是追求KISS原则的同时,不要使自己受制于某个厂商或平台,使自己变得简单以及愚蠢
(失去自己作为客户的上帝位置,被厂商忽视,成为简单而愚蠢的人),此为KMSS(keep me simple and stupid)。

  在Java世界,多层结构实现路径很多,从MVC到持久层框架有各种选择,例如我们可以使用Struts以及Hibernate组合成一个J2EE多层 应用系统。

  Rails也提供了model/view/controller多层实现,但是各层的实现框架也确定下来,省却了程序员在多个框架之间选择带来的“麻烦”(这是相对的)。

  而Jdon Framework则类似RoR这种提供缺省各层实现设计,表现层在struts基础上进行了CRUD流程抽象;通过提供JdbcTemp实现持久层技术,当然,持久层具体实现也可以选择hibernate等其他框架实现,秉承提供缺省的,但是也是可替换的宗旨。

  下图是两者各层架构比较图:

  我们通过上图可以看出,两者流程基本一致,所不同的主要是两点:RoR的Action Pack和Active Record,下面我们就这两点解释如下:

Action Pack

  Action Pack是RoR的MVC组件框架:

  View templates,相当于Struts中的Jsp;

  URL routing,相当于struts-config.xml流程配置,RoR不是使用XML配置,而是作为脚本代码,这也是一些人吹嘘的RoR无繁多XML配置真相所在,其实,XML也是一种脚本,从某种意义上来说:XML比语言脚本更简单易写(至少语法不多)。

  ActionController,初看相当于struts的DispatchAction,但是因为其包含业务逻辑,而我们在java中是不推荐在在控制层action中写业务逻辑的。

  ActionController功能在于:RoR可以将浏览器的请求直接映射到ActionController类的方法上,这有些类似Struts中的DispatchAction,但是,在Java中,业务逻辑是不推荐写在表现层的控制类中的,控制类只是负责前后台流程协调,是一种Mediator模式实现,不应该让其加入更多职责;在JF中,业务逻辑是写在Service类中,JF通过自己的命令服务调用模式,也可以直接将浏览器的请求直接映射到Service类的方法上,例如,调用http://localhost//MyWeb/abc.do?method=xxx,将直接激活Service类的xxx方法,程序员直接编写xxx方法内容即可。


1 2 下一页>>

责任编辑:lss
  相关新闻
Google回应维亚康母的起诉 称YouTube未侵权
Struts开发指南之Taglib的初步了解
Struts 中 html:options 的使用
在Struts框架下使用时间类型
看看如何在Struts应用中施展AJAX魔法
媒体巨头起诉Google和YouTube 赔偿10亿美元
Struts应用系统案例设计之需求分析
使用Spring更好地处理Struts动作
运用Jakarta Struts的七大实战心法
了解 Struts 框架的全新后代--Shale
Google回应维亚康母的起诉 称YouTube未侵权
MTV网络起诉YouTube获时代华纳等同行支持
媒体巨头起诉Google和YouTube 赔偿10亿美元
了解 Struts 框架的全新后代--Shale
Struts开发指南之Taglib的初步了解
在Struts框架下使用时间类型
Struts 中 html:options 的使用
运用Jakarta Struts的七大实战心法
Struts应用系统案例设计之需求分析
使用Spring更好地处理Struts动作
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号