http、soap和rest区别

来源:互联网 发布:远程访问数据库 编辑:程序博客网 时间:2024/05/19 18:16

http

http是标准超文本传输协议。使用对参数进行编码并将参数作为键值对传递,还使用关联的请求语义。每个协议都包含一系列HTTP请求标头及其他一些信息,定义客户端向服务器请求哪些内容,服务器用一系列HTTP响应标头和所请求的数据进行响应。HTTP-GET 使用 MIME 类型application/x-www-form-urlencoded(将追加到处理请求的服务器的 URL 中)以 URL 编码文本的形式传递其参数。 URL 编码是一种字符编码形式,可确保传递的参数中包含一致性文本,例如将空格编码为 %20,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISOLatin-1)值。 追加的参数也称为查询字符串;HTTP-POST参数也是 URL 编码的,但是,键/值对是在实际的 HTTP 请求消息内部传递的,而不是作为 URL 的一部分进行传递。

SOAP

SOAP(Simple Object AccessProtocol)简单对象访问协议。soap请求 (Simple Object Access Protocol,简单对象访问协议) 是HTTP POST的一个专用版本,遵循一种特殊的xml消息格式Content-type设置为: text/xml任何数据都可以xml化。
这里写图片描述
所有的 SOAP 消息发送都使用 HTTP POST 方法,并且所有 SOAP 消息的 URI 都是一样的,这是基于 SOAP 的 Web 服务的基本实践特征。

REST

REST(Representational State Transfer)一种轻量级的Web Service架构。可以完全通过HTTP协议实现。其实现和操作比SOAP和XML-RPC更为简洁,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。
REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法

(一) 首先REST只是一种风格,不是一种标准
(二) REST是以资源为中心的
(三) REST充分利用或者说极端依赖HTTP协议

设计原则:
1.1.显式地使用不同的 HTTP 请求方法
我们在 Web 应用中处理来自客户端的请求时,通常只考虑 GET 和 POST 这两种 HTTP 请求方法。实际上,HTTP 还有 HEAD、PUT、DELETE 等请求方法。而在 REST 架构中,用不同的 HTTP 请求方法来处理对资源的 CRUD(创建、读取、更新和删除)操作:
a.若要在服务器上创建资源,应该使用 POST 方法。
b.若要检索某个资源,应该使用 GET 方法。
c.若要更改资源状态或对其进行更新,应该使用 PUT 方法。
d.若要删除某个资源,应该使用 DELETE 方法。
1.2.无状态
传递User credentials是Restful,而传递SessionID是Un-Restful的,因为session信息保存在服务器端。
**无状态请求:**Server不保存任何请求状态信息,Client的每一个请求都具有User credentials等所需要的全部信息,所以能被任意可用的Server应答。
**有状态请求:**Server保存了Client的请求状态,Server会通过Client传递的SessionID在Server中的Session作用域找到之前交互的信息,并以此来实现应答。所以Client只能由某一个Server来应答。
1.3.公开目录结构式的 URI(通过逻辑URI定位资源)。
这里写图片描述

Restful与SOAP的区别

1、安全性:SOAP会好于restful
SOAP 不仅像 REST 一样支持 SSL,而且还支持增加了很多企业级安全特性的 WS-Security(WS = web services)。因此它能够提供通过中介的身份验证,而不仅仅是端对端的验证(SSL)。此外,SOAP 还提供了一个数据完整性和数据隐私性的标准实现。叫它“企业级”并不是说它更安全,它只是简单提供了典型互联网服务不需要的几个安全工具而已,事实上这些工具只有在很少的一些“企业级”场景下才能派的上用场。
2、效率和易用性(REST更胜一筹)
3、成熟度(总的来说SOAP在成熟度上优于REST)
4、REST 允许很多不同的数据格式而 SOAP 仅支持 XML
5、REST 具备更好的性能和可扩展性。REST 读取可以被缓存起来,而基于 SOAP 的读取无法被缓存。

REST与HTTP差别

http只是数据交换的方法,支持服务器与客户端间数据交换,这里的服务器并不是现实中服务器的定义。任何提供服务的电脑都可以被称为服务器。无论你用什么机器向服务器发出请求,你使用的机器都将充当客户机的角色。而rest会有一些封装,rest应用在服务器上,而http是应用在服务器与访问者之间,是客户端程序与服务器交换数据的方法

参考:http://blog.csdn.net/roguestudys/article/details/52818810
参考:https://www.ibm.com/developerworks/cn/webservices/0907_rest_soap/

原创粉丝点击