在当前时期,我们每天都可以看到许时髦的技术名词,如:Big Data,SOA, cloud computing,REST,Web Service等等,以至于一个WEB技术的初学者看到这些名词,会陷入一种焦躁的状态,不知道他们该从何学起,即便是阅读了一篇技术文章,或者读了几本相关的技术书籍,也不一定能抓住WEB技术的本质。WEB的本质是什么?这就要谈到WEB的起源,现代WEB技术基础的主要是奠基在美国加州大学欧文分信息与计算机科学博士Roy Thomas Fielding的一篇名为《架构风格与基于网络的软件架构设计》的博士论文,要弄清楚WEB的本质,首先应该对这篇论文进行深入的学习和研究。
Roy Thomas Fielding博士是HTTP和URI等Web架构标准的主要设计者,Apache HTTP服务器的主要开发者。他在他的博士论文里提出了“架构风格”这个软件领域的专业术语,推导出一个称为“REST”的架构风格,并详细阐述了REST架构风格的推倒过程,指出不同架构的评价标准就是其背后的的架构风格。值得注意的是,REST指的是一种架构风格的名称,这里的风格,不同于我们通常所说的个性化的含义,它代表的一组特征,在软件领域我们把它叫做架构约束。
我们在前面谈到,REST其实是Fielding博士提出一种基于网络的软件架构设计风格,其英文全称是“Representational State Transfer”,翻译成中文为“表述性状态转移”。对REST更通俗的解释就是:它是软件架构的一种分类,我们把具有某一组特征的软件架构设计称之为REST Style。
在WEB产生后,人们对WEB产生了浓厚的兴趣,以至于各种应用层出不穷,很快基于WEB的B/S结构代替了传统的基于桌面应用的C/S结构而成为复杂软件的主流方案。随着各应用之间数据交互的日益增多,出现很多新的交互技术,如XML-RPC、JSON-RPC这类应用层面基于HTTP的私有交互协议,慢慢的人们发现各个应用对外提供的服务接口规则不统一,集成起来有许多困难,于是出现SOAP协议,SOAP协议是用来解决服务接口的规范性问题。 SOAP协议扩展性很好,安全性也考虑的很全面,但是使用起来却有些复杂,更重要的是在互联网蓬勃发展的今天,人们越来越认识到追溯WEB的本质,才能创造出简单而又高效的WEB服务,于是一个新的名词RESTful web services应运而生, RESTful web services使用RESTful架构风格构建的服务,由于其轻量的特性和在HTTP上直接传输数据的能力,在互联网服务部署技术的选择上,使用RESTful风格构建服务正在逐渐成为基于SOAP技术的有力挑战者。
1.4 RESTful Web Service规范的发展
目前,在Java社区,关于RESTful Web Service规范有两个JSR规范,一个是JSR311规范,另一个是JSR339规范,关于这两个规范还有另外两个名字,分别是JAX-RS1.0和JAX-RS2.0。JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java标注来简化Web服务的客户端和服务端的开发和部署。JSR339规范为JSR311规范的升级规范,目前JSR311规范与JSR339规范均已完成。
1.5 RESTful Web Service的实现方案
关于RESTful Web Service的实现方案有两种:一种是按照JAX-RS规范的标准实现,另外一种是按照自定义的方式实现。