维基百科把表述性状态转移(Representational State Transfer ,REST)定义为“分布式超媒体系统、如万维网的一种软件架构形式”。Web服务的RESTful方案被广泛视为SOAP的一个更简单的替代方案。许多大型的Web服务提供商如亚马逊、Twitter和谷歌都在广泛地使用它。 如果你正在考虑上一个RESTful的Web服务,但又不想做无谓的重复劳动,你就需要了解已有的地位已经确定的工具。
TT SOA编辑推荐:REST结构全面解析手册 正如菲尔丁(Fielding)2000年在其博士论文中所阐明那样,REST风格的Web服务的确是相当的简洁。你把基本的H……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
维基百科把表述性状态转移(Representational State Transfer ,REST)定义为“分布式超媒体系统、如万维网的一种软件架构形式”。Web服务的RESTful方案被广泛视为SOAP的一个更简单的替代方案。许多大型的Web服务提供商如亚马逊、Twitter和谷歌都在广泛地使用它。
如果你正在考虑上一个RESTful的Web服务,但又不想做无谓的重复劳动,你就需要了解已有的地位已经确定的工具。
TT SOA编辑推荐:REST结构全面解析手册
正如菲尔丁(Fielding)2000年在其博士论文中所阐明那样,REST风格的Web服务的确是相当的简洁。你把基本的HTTP方法跟能提供资源的特定地址组合到一起,就可以拥有一个RESTful的服务。那么,为什么人们要建立这些各种各样的框架去创建和消费RESTful的服务呢?这些框架被建立起来,用于令开发人员更容易地与不同的其他行业标准进行协作,以便开始应用RESTful服务。新的REST框架如雨后春笋层出不穷,但在此我要说的,是三种成熟框架的最新情况。
Jersey项目及JAX-RS标准
根据JSR-311规范来发展REST式Web服务的Java API或叫做JAX-RS,Java开发者进行这项工作已经有一段时间了。当前的版本是在2008年发布的,2009年11月推出了一个维护更新版,1.1.。该规范展示了如何去给一个常规的Java类增加注释(Annotations),以便它能被表示为REST式的Web服务。注释是一种特殊的语法,用于给Java代码的不同段打上标签,使得服务容器可动态定位该类和方法,以满足REST式风格的请求。
其参考实现是Jersey项目,目前正在开发当中,该项目是Sun(现为Oracle)Java企业版(JEE)的开源实现的一部分。一个活跃的开发者社区刚刚发布了Jersey1.3版,该版本实现了JAX-RS 1.1,但文档尚未跟进介绍完全部的新特性。1.3版重新组织了代码,以便更容易地集成进最新版的GlassFish,即Java企业版6的开源参考版。注意,Jersey可容易地被添加到已有的Tomcat 6安装里,对现有应用不会造成干扰。Eclipse和NetBeans IDE都为Jersey项目提供了环境,一个搜索就能轻易地找到如何在这些环境中开发Jersey的教程。Jersey工具包含有一些类,这些类被用于实现客户端,以生成HTTP请求,并解析来自REST式Web服务的回应。
WADL—Web应用描述语言,描述服务所提供的资源的WSDL的一个更为简单的等价物, Jersey项目正试图把它推广出去。这一XML格式的服务描述可有Jersey服务生成出来,并开放给开发者进行扩展。其目的是想让创建访问Jersey服务的客户端软件更容易些。据我所知,WADL尚未得到大规模的采用。主要的暴露REST式接口的Web服务,如Twitter,发布的是服务的纯文本描述,各自语言的例子都有。
Restlet2.0版
Restlet框架是在JSR-311委员会成立之前作为一个开源项目启动的。上一次我看到Restlet框架 1.1还是时其当前版本,不过2版已经将近可以发布了。2.0版(2010年7月刚发布)实现了一个重大版本,对包进行了组织并简化了API。重新组织令使用一个代码库去创建五个不同版本成为可能。针对每一种工作环境,每个版本都包含了对基本的Restlet类以及各种不同的扩展的支持:
- Java标准版(JSE)
- Java企业版(JEE)
- Google App Engine
- Google Web Toolkit(GWT)
- Android
Restlet的开发者一直在为支持工业标准而忙个不停,不断增加Restlet的扩展数量。2.0版的Restlet框架直至JAX-RS 1.0 API以及当正前由微软开发的Open Data 协议(Odata)。Restlet客户端API强调使用了与服务端相同的接口。这一方案与Jersey和其他REST客户端所使用的模仿HTTP浏览器客户端功能的方案构成了强烈的对比。Restlet文档为使用不同IDE进行开发提供了扩展的例子。
IBM的Zero项目以及WebSphere sMash
自我上次看过它以来,Zero项目发展非常迅速。这一旨在快速开发(零复杂性、零开支、零障碍)的孵化器项目已经发展为一个被称为IBM WebSphere sMash的产品,而开发社区则继续以Project Zero之名存在。注意Zero项目并非开源,但为开发者提供了一种向商业版的sMash提供创意的途径,同时利用了开源的工具,如Groovy、Dojo以及PHP。
sMash产品的当前版本是1.1,集成了Zero项目的RESTful风格以及其他IBM产品,如CICS交易服务器。在服务器端,突出使用了基于Java的脚本语言Groovy以及流行的PHP脚本语言。服务的部署可在WebSphere服务器、Amazon的EC2云,或者基于IBM System z的私有云。在浏览器端, sMash使用了流行的Dojo JavaScript库。
作者
相关推荐
-
内存数据网格提供商一头扎进Java
10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。
-
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高, 直到把内存吃完应用崩溃,但是这个wrapper
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高 […]
-
Google App Engine for Java 对于目前中国需要学习吗?
-
前无古人后无来者的Java平台
开发人员一直在致力于保持Java的活力,经过20年后,我们感觉从来没有更好的、更令人激动的时刻如同Java社区一样。