Project Zero IBM公司RESTful应用的新开端

日期: 2008-05-19 作者:William Brogden翻译:Eric 来源:TechTarget中国 英文

是的,Project Zero确实值得“新开端”这样一种称谓。通过这个项目,IBM正全新打造使用RESTful的Web服务。“Project Zero”这一名称来源于“不复杂、无开销、无障碍”的口号。尤其引人注目的是,它强调对流行脚本语言PHP、Groovy和JavaScript的直接支持,有利于迅速开发。

总的说来,Project Zero遵循“规范优先原则”,使用Ruby on Rails偏爱的模型-视图-控制器(MVC)模式,而忽略了WSDL和WS-*类等规范标准。   IBM公司认为,Project Zero是一个“孵化器”,旨在摆脱以前的架构,探索新的理念。不过,这并不是严格意义上的开……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

是的,Project Zero确实值得“新开端”这样一种称谓。通过这个项目,IBM正全新打造使用RESTful的Web服务。“Project Zero”这一名称来源于“不复杂、无开销、无障碍”的口号。尤其引人注目的是,它强调对流行脚本语言PHP、Groovy和JavaScript的直接支持,有利于迅速开发。总的说来,Project Zero遵循“规范优先原则”,使用Ruby on Rails偏爱的模型-视图-控制器(MVC)模式,而忽略了WSDL和WS-*类等规范标准。

  IBM公司认为,Project Zero是一个“孵化器”,旨在摆脱以前的架构,探索新的理念。不过,这并不是严格意义上的开源开发,IBM网站上声明说:这个项目尝试以新的方式设计商业软件,这种做法我们目前称为“社会导向的商业开发”。

  不久,基于Project Zero、IBM WebSphere sMash及IBM WebSphere sMash开发版的商用产品就会涌现。这些开发平台为创建用最少代码编写的程序提供了可视化的工具。“sMash”这一名称显然强调构建“mashup”程序的轻松状态,其资源是从各种服务中获得。目前,在WebSphere外的领域部署Project Zero程序的可行性尚不清楚。

  发展现状

  目前,Project Zero大概每个月都会发布新版本。现在已经发布到“Milestone 7”版本,这一点大致与JAX-RS(Jersey)项目相同,它也是大约每月发布一次,目前版本是“early access 0.7”。但要注意JAX-RS是一个不断发展的规范,它使用Jersey作为实施参考;而Project Zero虽然也在不断发展,却不依赖于任何规范,HTTP除外。

  Project Zero架构

  RESTful Web服务的核心问题是解释URI,以及指向正确路由的请求的标题,从而返回理想的表达式。在Project Zero架构中,HTTP请求的处理可以激发一系列事件。每一个事件都完成一定程度的逻辑处理,而且根据处理结果可能是触发下一个事件或是提示错误。高级程序员可以创建自己的事件处理代码。默认的事件处理顺序如下: 

  requestBegin——建立一个表述请求的数据结构。

  secure——对请求进行安全检查,若无法通过,则返回一个HTTP错误代码,并进入log事件。

  GET,PUT,POST,DELETE——使用HTTP方法和URI定位代码,并产生反馈。

  log——根据日志的配置设置进行记录,始终处于运行状态。

  requestend——清理使用资源,始终处于运行状态。 

  要注意,只有HTTP方法和URI被用于定位代码,产生反馈。这项工作是通过配置文件和一种命名脚本规范的doXXX方法实现的。换句话说,在第3步中,如果请求方法是GET,那么程序就会在脚本中为特定的URI搜寻doGET方法。为创建理想的返回类型(HTML格式,XML,JSON等),程序员可以选择不同的输出渲染方法。Project Zero提供了一个Groovy和PHP“渲染程序”的程序库,可以处理许多典型的输出格式。举例来说,Groovy模板程序可以帮助你创建网页模板,主要是静态HTML网页模板,获得渲染过程中填写的一些请求特定值。

  Zero服务器的配置

  Project Zero广泛使用了阿帕奇软件基金会(Apache Software Foundation)的 Ant制作工具及相关的Ivy相关性管理器,对程序内各部分的汇编工作进行协调。Ant和Ivy文件都是XML格式。程序的配置及数据结构的初始化广泛使用了JavaScript Object Notation(JSON)脚本文件,而其他的工具包使用的可能是XML文件或属性文件。

  数据库驱动程序的Zero资源模型

  继MVC范式用于许多Web服务架构之后,Project Zero推出了Zero资源模型(ZRM),它遵循简化编码程序的标准,使用JSON定义和声明数据库(模型)。用ZRM规范定义的数据库,可以利用Dojo工具包快速创建Ajax式动态HTML网页,这种数据库已经被整合入Project Zero的发布版本中。 

  Zero中Eclipse插件的使用

  按照Project Zero网站的说明,我运行了Eclipse(版本要求3.2.2),并搜索了指向Project Zero更新地址的新功能。在同意许可之后, Eclipse顺利的为当前Project Zero的版本(M7)补充了Groovy支持及范例插件。虽然Project Zero网站对Java请求处理程序作出了一些信息描述,但是目前的插件仍然强调Groovy,而不包含Java范例。因为Groovy脚本可以方便的调用Java对象和数据库,所以使用Groovy连接现有的Java对象应该会比较容易。

  与JAX-RS的对比

  Project Zero显然会与Sun公司在Jersey项目中用于开发工具库的JAX-RS API同台竞争,所以让我们将两者比较一下。两者间最明显的不同是语言支持。虽然是用Java语言编写,但是Project Zero更强调脚本语言Groovy,PHP和JavaScript。相比之下,JAX-RS,则完全以Java语言为核心,并广泛依赖Java程序说明,虽然它也支持JSON输出,但其程序代码是用Java语言编写。 

  开发商将Project Zero用于商业的权利,严格受控于IBM的“社会导向的商业开发”许可,而且目前仅限于WebSphere领域。与此相反,JAX-RS规范则是免费提供的,并且至少有四个独立实现,其中包括开源Jersey项目。一些JAX-RS实现也允许非常小巧的RESTful服务。

翻译

Eric
Eric

相关推荐