全面解析Ruby on Rails的Web服务

日期: 2008-01-31 作者:William Brogden翻译:周姝嫣 来源:TechTarget中国 英文

Ruby曾只是一种模糊的、面向对象、动态类型的“脚本语言”,直到Rails Web应用框架的出现,Ruby才突然引起人们的关注。两者的结合使用,很快以“Ruby on Rails”为人所知。我猜想,其原因可能是这种叫法传达出的形象远甚过“Rails on Ruby”吧—-不管怎么样,我们将它缩写为“RoR”。   作为一种解释型语言,Ruby的性能并不是特别出众,但是由于RoR非常流行,人们花了很多努力对此加以改变。

最初的解释器由C语言编写,但是现在的版本采用Java ( JRuby)或……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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很感兴趣。

相关推荐