什么是rest

什么是rest_第1张图片
REST (REpresentational State Transfort) 形式上应该表述为客户端通过申请资源来实现状态的转换,在这个角度系统可以看成一台虚拟的状态机。抛开R. T. Fielding博士论文里晦涩的理论不说,REST应该满足这样的特点:1)客户端和服务器结构;2)连接协议具有无状态性;3)能够利用Cache机制增进性能;4)层次化的系统;说到底,REST只是一种架构风格,而不是协议或标准。但这种新的风格(也许已经历史悠久?)对现有的以SOAP为代表的Web Service造成的冲击也是革命性的,因为它面向资源,甚至连服务也抽象成资源,因为它和HTTP紧密结合,因为它服务器无状态。

目前知道的三种主流的Web服务实现方案为:
REST:表象化状态转变 (软件架构风格)
SOAP:简单对象访问协议
XML-RPC:远程过程调用协议 (已经慢慢被SOAP取代)

其他理解:
REST:表征状态转移(Representational State Transfer),采用Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 将所有 Web 系统的服务抽象为资源,REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。Http协议所抽象的get,post,put,delete就好比数据库中最基本的增删改查,而互联网上的各种资源就好比数据库中的记录(可能这么比喻不是很好),对于各种资源的操作最后总是能抽象成为这四种基本操作,在定义了定位资源的规则以后,对于资源的操作通过标准的Http协议就可以实现,开发者也会受益于这种轻量级的协议。REST是一种软件架构风格而非协议也非规范,是一种针对网络应用的开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

SOAP:简单对象访问协议(Simple Object Access Protocol)是一种标准化的通讯规范,主要用于Web服务(web service)中。用一个简单的例子来说明 SOAP 使用过程,一个 SOAP 消息可以发送到一个具有 Web Service 功能的 Web 站点,例如,一个含有房价信息的数据库,消息的参数中标明这是一个查询消息,此站点将返回一个 XML 格式的信息,其中包含了查询结果(价格,位置,特点,或者其他信息)。由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。

XML-RPC:一个远程过程调用(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。后来在新的功能不断被引入下,这个标准慢慢演变成为今日的SOAP协定。XML-RPC协定是已登记的专利项目。XML-RPC透过向装置了这个协定的服务器发出HTTP请求。发出请求的用户端一般都是需要向远端系统要求呼叫的软件。

三种方案的简单比较
XML-RPC已慢慢的被SOAP所取代,现在很少采用了,但它还是有版权的,我在此就不作多介绍。
成熟度上:SOAP在成熟度上优于REST

效率和易用性上:REST更胜一筹(REST效率更高的原因在于,仅仅是建议的Http协议之上的一种协议。而SOAP则需要对数据、xml封装信息头,解封装等)

安全性上:SOAP安全性高于REST,因为REST更关注的是效率和性能问题

分布式能力:REST更适合在分布式环境中使用、因为REST是基于原生Http协议的,而http协议是无状态的。大型分布式环境都能够对无状态支持良好,无状态增强了整个系统的扩展性。这也是为什么越来越多的云计算,分布式项目选择REST。

(注:SOAP也是基于HTTP协议的,但是却提供了session、cookie等机制来使得SOAP有状态,从而支持需要有状态的业务。有状态举例:1、增加一个用户2、获取最新增加的用户。那1的执行成功与否,及执行先后顺序的状态将会影响2的结果。)

总体上,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。而SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。所以我觉得纯粹说什么设计模式将会占据主导地位没有什么意义,关键还是看应用场景,正是那句老话:适合的才是最好的

同时很重要一点就是不要扭曲了REST现在很多网站都跟风去开发REST风格的接口,其实都是在学其形,不知其心,最后弄得不伦不类,性能上不去,安全又保证不了,徒有一个看似象摸象样的皮囊。

SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持,.net ,php ,java 都已经对其有了很好的支持。REST没有任何规范对于安全方面作说明。因此在考虑安全性上,SOAP要高于REST。

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
d2qJU3aVPF7N1wF3kCzIag==

你可能感兴趣的:(笔记)