Ruby曾只是一种模糊的、面向对象、动态类型的“脚本语言”,直到Rails Web应用框架的出现,Ruby才突然引起人们的关注。两者的结合使用,很快以“Ruby on Rails”为人所知。我猜想,其原因可能是这种叫法传达出的形象远甚过“Rails on Ruby”吧—-不管怎么样,我们将它缩写为“RoR”。 作为一种解释型语言,Ruby的性能并不是特别出众,但是由于RoR非常流行,人们花了很多努力对此加以改变。
最初的解释器由C语言编写,但是现在的版本采用Java ( JRuby)或……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
Ruby曾只是一种模糊的、面向对象、动态类型的“脚本语言”,直到Rails Web应用框架的出现,Ruby才突然引起人们的关注。两者的结合使用,很快以“Ruby on Rails”为人所知。我猜想,其原因可能是这种叫法传达出的形象远甚过“Rails on Ruby”吧----不管怎么样,我们将它缩写为“RoR”。
作为一种解释型语言,Ruby的性能并不是特别出众,但是由于RoR非常流行,人们花了很多努力对此加以改变。最初的解释器由C语言编写,但是现在的版本采用Java ( JRuby)或.NET ( IronRuby)编写,可能还有其它的语言版本。目前最稳定的Ruby版本是今年三月发布的1.8.6版。1.9版本有望出现重要更新,而2.0版本则会有极为重大的变化。
Rails是什么?
Rails Web应用框架并不是试图成为所有开发人员的一切。它主要注重使用关系型数据库和“模型-视图-控制器”设计模式的应用。最初,Ruby on Rails是由David Hansson创建的。当时他正在Web设计公司37Signals开发一个项目管理工具。第一个开放源码的版本于2004年发布。Web开发人员发现RoR使创建面向数据库的Web应用程序变得非常简单,这个行业“术语”也因此迅速出现。
开发人员发现RoR中许多内置的假设条件和命名规则大大减少了运行基本Web应用程序所需的代码行。命名规则取代了其它Web应用框架常用的复杂的XML配置文件。RoR的支持者称之为“惯例优于配置”原则。
RoR 1.2版发布于2007年10月,作出了很大改进,如支持REST风格的请求。Rails 2.0现处于“release candidate 1”阶段,有望支持更多的REST。Rails目前已支持SOAP,不过Rails开发人员鼓励使用REST方式。
MVC和Web应用程序
“模型-视图-控制器” (MVC)设计模式首次出现在Smalltalk中。Smalltalk是Xerox公司开发的面向对象的先驱语言。许多开发人员认为,用MVC方式思考能够帮助理清复杂应用程序的结构。
模型
通过将数据存储和检索的所有内容放入“模型”组件中,开发人员可以将细节分离到一个定义明确的界面背后。可能在开始设计项目时,你使用的是一个包含虚假数据的模型,然后转移到使用同一界面、由主存数据库支持的另一模型中,最后升级到大型的商业数据库,但不改变项目的其它内容。
在Rails的应用中,模型类建立在能提供所有基本功能的基类(base classes)之上。每个数据表中创建一个客户模型类,再从表中提取名字,以创建访问方式。RoR工具提供了可以从模型类中自动产生源代码框架的Ruby脚本。
视图
“视图”用于以特殊的方式提供数据。目前,Web应用程序可能需要提供多种不同的视图。尽管RoR最初是为HTML网页而设,但新版本也能支持Web服务中使用的多种格式。通常,视图由模版文件产生。模版文件包括经常出现的各种要素,如HTML markup标签、plus标签等,这些标签可以由一个或多个模型中的数据进行动态评价。
RoR提供的基类支持HTML、 XML 和JavaScript格式的视图生成。下面的表格给出了符合格式的客户端形式。JSON代表JavaScript Object Notation,这种格式能够传送XML之类的复杂数据,而且能节省速度和批量。
格式 |
客户端 |
举例 |
HTML |
典型的浏览器 |
充斥着用户具体信息的HTML网页 |
XML |
使用JavaScript的浏览器 |
AJAX 式动态网页 |
JSON |
使用JavaScript的浏览器 |
使用JSON 而不是 XML技术的动态网页 |
JSON |
Web服务客户端 |
Python 和支持JSON解析的其他语言 |
XML模版可以用于创建简单的SOAP消息,但是大多数情况下,利用RoR创建SOAP或XML-RPC Web服务似乎都会在控制器组件中产生很多输出,从而干扰标准的MVC模式。我能找到的SOAP服务例子都采用的先进的WS-*特征并不比其他框架采用的多。RoR开发人员似乎都更重视将REST式的Web服务作为未来发展的趋势。
控制器
“控制器”通常用于处理来自用户或服务器的请求输入,以决定采用哪种模型对象处理数据、采取什么措施以及哪类视图能产生回应。控制器类能够利用大型的帮助类软件库来处理HTML要素。RoR的最新版本建立了控制器基类,能够处理使用REST术语的URL请求,从而加大了对REST式请求的支持。
Ruby和Rails的合法性
Ruby语言是具有版权的免费软件,拥有自身的许可条件。Rails框架是在MIT License极为开放的条件下发布。David Hansson已经提交了对“RUBY ON RAILS”、“RAILS”和其它官方Rails标识使用的商标保护文件。最初试图采用基于Java的脚本语言Groovy进行平行开发(即Groovy on Rails)的想法遭到了Hansson的反对,因此目前这个项目称为Grails,而且是独立开发。
RoR平台
Rails开放源码开发人员通常采用Apple Mac OS X,最新发布的OS X 10.5版本(即Leopard)包括了RoR。使用Windows和Linux的开发人员在安装Ruby应该不会出现什么问题,一旦安装了Ruby语言,“RubyGems”软件包管理器可以负责安装Rails的最新发布。你还需要配置关系型数据库,不过RoR能与最流行的开放源码和商业系统合作。MySQL, SQLite 和PostgreSQL 都是很流行的选择方式。还有多种包含Web服务器和数据库的软件包,可以使安装更加简单。
目前很流行的IDEs(集成式开发环境)——Netbeans和Eclipse加进了支持Ruby编码的模组。还有一些项目也可创建IDEs,且专门支持RoR。这些情况大多数基于Eclipse。
结论
目前,RoR主要用于创建基于浏览器的Web应用程序。“模型-视图-控制器”设计模式非常灵活,因此可以扩展应用,在不改变数据模型组件的情况下覆盖大量客户端。开发人员若感觉在Web服务中使用SOAP太复杂,一定会对支持REST的RoR很感兴趣。
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
API设计如龙生九子 各不相同
IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。
-
2014年web开发者应该学习的技术盘点
web开发行业发展迅速,每天总有新的技术、框架、语言或技术方法诞生,对大部分人来说都喜欢学习“所有东西”,但这不符合实际!所以,在2014年,作为Web开发者应该学习什么呢?
-
QA技能差距:测试人员需足够的编写测试脚本的能力
如果QA专业人员都需要具备一项技能的话,那就是编写测试脚本的能力。因为测试人员来希望获得自动化测试逻辑结果,这就需要QA测试专家来编写软件能够执行的测试脚本。