推出Zero项目,IBM明确对Restful SOA和动态语言的支持

随着REST原则(译注:原文是principals,疑为principles的笔误)和面向Web架构概念逐渐由非主流边缘化产物成为企业主流,在最近的访谈中,IBM WebSphere CTO Jerry Cuomo表示:对IBM来说,它们已经成为Zero项目的核心焦点。该项目“引入了一个简单环境,用于创建、装配和运行基于流行Web技术的应用”。Zero项目采用开放开发(但不是开源)模型进行开发。Zero项目的几个有趣之处在于,它延续了Web应用开发由纯java转向动态语言这一趋势,并强调企业中REST服务的开发。

Zero项目采纳Groovy和PHP,而不直接使用Java语言。用Cuomo的话来说:

在IBM,我们都喜欢Java,而且我相信在IBM、Sun、BEA和Oracle中,我们有一大群勤奋的喜爱Java的同志。在开发中,Java的严密性为我们服务得非常好,并且至少在今后10年间它将继续很好地为我们服务。但是在Zero项目和Zero平台中,我们将Java提升为系统编程语言。就像如今在Java中的情形,C是系统编程语言。如果你真的想要干些脏活累活,你可能需要选择使用C来完成,然后使用Java的方式来包装C函数。嗯,在Zero中,OO的Java世界被提升到系统级别,其顶端则是脚本语言。

在现有Java栈中融合动态语言技术的概念并不新鲜,在这一点上,Zero项目似乎是IBM对Oracle与Zend结成伙伴关系意图将PHP集成进它的应用服务器和数据库产品,以及在去年的JavaOne上BEA宣布将PHP集成进入WebLogic的回应。Sun Microsystems也已在动态语言Web层开发中投入巨资,包括与Zend的合作、获得JRuby团队以及Phobos应用服务器项目。最后,Coucho Technologies 开发出了一个PHP实现(它是PHP最引人注目的净室实现之一)并将其合并到了他们的Resin Java应用服务器中。

除了动态语言的使用,本次访谈以及项目本身的另一个突出主题是REST架构风格,它是Zero项目的核心。尽管他的评论尝试保护WS-*协议栈技术的必要性和价值,但是Cuomo仍然清楚地表示,回归REST风格服务清新简单特性有切实的业务好处:

[对与IBM共事的一名用户来说,现有WS-*]服务的每次服务调用可能有10个参数。我们简化了API,可能只有5个。当然,[因为它们是] URL可达的,它们交互起来更加流畅。因此它们自动地领会了在使用企业服务中50%要领。因为这些事物在使用REST的Web形式中可以被做得更具访问性,因此现在更多的人使用它们的服务。很酷的一点是,因为你降低了进入你的企业服务的门槛,换来了人们对服务的使用。

接下来,人们开始以你从来没有想过的方式去使用服务,于是你得到了一组依靠你的服务编写的应用集合。很有希望这些应用能产生新的业务。所以,我们认为那就是Web SOA和企业SOA令人敬畏的结合。

很明显的是,Cuomo还提供了一个企业WS-*服务和轻量级REST服务框架携手工作的愿景;那并不是一种非此即彼的情形:

我认为,像Zero与企业SOA之间协作的环境是一个非常强大的组合,它可作为对你的企业平台的一种扩展,进入到原有企业平台现在可能还很难达到的领域……如果我想转换我的企业服务集合作为数据提要(feed)暴露,我可以使用Zero非常快地完成。我可以创建一个Zero应用,使其位于我的企业应用之前,该企业应用负责将企业服务集合转换为轻巧的Web服务集合。

在当前整个行业寻找本身的定位以应对由PHP和Ruby on Rails所取得的开发效率大幅提高的时候,Zero项目是一个有趣的回应,因为它既不是向Rails的移植,也不是Rails的克隆。尽管Ruby on Rails可能被视为一种高度优化了的MVC架构模式的实现,这是因为它充分利用了Ruby语言本身的灵活性。但是,Zero项目核心概念的网页说明了Zero项目的焦点略有不同。通过从语言实现抽象框架概念,Zero项目的使用者拥有语言的灵活性。你可以换掉Groovy和PHP(包括今后支持的其他动态语言),而使用相同的框架。当你想/需要重新使用Java时,你也随时可以做到这一点。在架构上,Zero项目抛弃了传统的基于Action的框架,大量采纳使用无状态事件处理器的基于事件的架构,事务状态则保存在全局上下文中。最后,Zero项目将其自身视为具备开放和可扩展的模块架构的内核,非常类似Eclipse模型。对IBM来说,该模型已经很成功。

查看英文原文:IBM affirms Restful SOA & dynamic languages with Project Zero

你可能感兴趣的:(推出Zero项目,IBM明确对Restful SOA和动态语言的支持)