Java 中 REST 和 SOAP 的区别
1. 简式
REST 代表代表性状态传输 (REST),而 SOAP 代表简单对象访问协议 (SOAP)。
2.架构风格与协议
REST 是一种架构风格,RESTFul Web 服务基于其构建,而 SOAP 是一种标准,旨在简化客户端和服务器之间在格式、结构和方法方面的通信。
3、HTTP协议的使用
REST充分利用了HTTP协议,包括[GET、POST、PUT和DELETE等]方法来表示来自提供图书相关数据的应用程序的动作,GET请求可用于检索图书,POST可用于上传数据一本新书,DELETE 可用于从图书馆中删除一本书。另一方面,SOAP 使用 XML 消息与服务器通信。
4. 支持格式
RESTful Web 服务可以返回各种格式的响应,如 JSON、XML 和 HTML,而使用 SOAP Web 服务时,您将响应与 XML 绑定,因为实际响应捆绑在始终采用 XML 格式的 SOAP 消息中。
5.速度
处理 RESTful Web 服务请求比处理 SOAP 消息快得多,因为您需要进行更少的解析。由于这个原因,RESTful Web 服务比 SOAP Web 服务更快。
6.带宽
对于相同类型的操作,SOAP 消息比 RESTFul 消息消耗更多的带宽,因为[XML]比[JSON]更冗长,JSON 是发送 RESTFul 消息的标准方式,并且 SOAP 为每条消息都有一个额外的标头,而 RESTFul 服务使用 HTTP 标头。
7. 通信独立
由于 SOAP 消息包装在 SOAP 信封中,因此可以将它们发送到任何传输机制,如 TCP、FTP、SMTP 或任何其他协议。另一方面,RESTful Web 服务严重依赖于 HTTP 协议。
他们在操作中使用 HTTP 命令,并依赖 HTTP 将内容传输到服务器。尽管在现实世界中,SOAP 主要基于 HTTP,因此并未真正利用传输独立性这一优势。
8. 资源识别
RESTful Web 服务利用 URL 来标识要访问的所需资源,而 SOAP 使用 XML 消息来标识要调用的所需 Web 过程或资源。
9. 安全
RESTful Web 服务中的安全性可以使用标准和传统解决方案来实现,以授权访问某些 Web 资源。在基于 SOAP 的 Web 服务中实现安全性时,您需要 Web 上的其他基础设施来启用消息或传输级安全问题。
10.缓存
RESTful web 服务充分利用了 web 缓存机制,因为它们基本上是[基于 URL 的]。另一方面,SOAP Web 服务完全忽略了 Web 缓存机制。
11.方法
在基于 REST 的 Web 服务中,每个实体都以资源为中心,而在 SOAP Web 服务的情况下,每个实体都以接口和消息为中心。
12.一个例子
在第一段中,我们看到了一个使用 SOAP 和 RESTFul 风格请求相同 Web 服务的示例,您可以看到 REST Web 服务易于理解,可以缓存,并且与 SOAP 相比需要很少的努力来理解.
有关 SOAP Web 服务的更多技术细节
-
SOAP 代表简单对象访问协议,但没有什么比这更简单了:)
-
只能使用 SOAP Web 服务将 [XML 消息]发送 到服务器,因为您的请求嵌入在 XML 格式的 SOAP 信封中,在另一方面,RESTful Web 服务允许您以各种格式(如 JSON)发送请求,并且足够灵活以发送 [JSON 响应])。
为什么 REST 优于 SOAP?
现在您已经了解了 REST 和 SOAP Web 服务之间的一些区别,让我们总结一下为什么 REST 是满足现代 Web 服务需求的更好选择
的原因: 1. REST 可以被任何客户端使用,例如 Java、C++、Python 客户端,以及甚至是带有 Ajax 和 JavaScript 的网络浏览器。
-
与 SOAP 相比,REST 是轻量级的,它不需要 CPU 消耗 XML 解析,而且它消耗的带宽也更少,因为与 SOAP 不同,REST 不需要为每条消息提供 SOAP 标头。
-
SOAP 是一项古老的技术,所有现代技术巨头都在使用类似 REST 的 Google、Twitter 和 Flickr。
-
REST 简单易学,就是名词和动词。如果您已经了解 HTTP 方法,那么它就更容易了。
-
Java 对 RESTFul Web 服务有很好的支持,它对 SOAP Web 服务也有很好的支持,但你有很多选择,比如 Jersey、RESTLet 等。