第二节:REST和WebService的关系
REST是一种架构风格,WebService是服务接口的规范,二者不是一个层面的概念。一般语境下,将二者相提并论的时候,意思是比较RESTful的服务和WebService服务之间的关系。RESTful的服务和Web服务并不是互斥的对立关系。实际上符合WebService规范的服务,也完全可以是RESTful的。一定要描述二者的关系的话,可以说是互有交集的关系。
常见的WebService是使用http协议和SOAP报文的服务,经常简写为SOAP@HTTP,这只是WebService的一种形式。而常见的RESTfu服务是使用http协议和JSON报文的服务,简写为JSON@HTTP。对常见RESTful服务的说法其实并不严谨:因为RESTful服务还可以用来操作图像、声音等非文本的资源,而这些资源一般不使用JSON报文来表达。如果要对比REST和WebService的关系的话,可以拿这两种常见的实例来对比。而这个层面的对比,也只是对两种接口形式进行对比。
就接口形式来看,二者差异并不大。都是基于HTTP协议,报文本质上都是文本。因此都具有易于阅读,跨平台、可移植性较好等优点。RESTful使用http的动词作为操作的谓词,而WebService的操作则是由报文所定义的,因此RESTful在这点上更加通用。另外,在操作的安全性方面,RESTful明确规定了读取操作不得修改资源,对副作用的控制更加严格。