SOAP 和 REST Web 服务简介

2025年3月17日 | 阅读 7 分钟

SOAP Web 服务

SOAP 是 **简单对象访问协议** 的缩写,是一种网络平台,用于在 Web 服务中交换或通信网络上的两个不同机器之间的数据。它使用 XML 格式的数据通过 HTTP 协议传输消息。在 Web 服务中,SOAP 允许用户请求与其他编程语言进行交互。通过这种方式,它提供了一种在不同平台(操作系统)、编程语言和 Web 服务中使用的技术上运行的应用程序之间进行通信的方式。

SOAP and REST Web Services

SOAP 消息

SOAP 消息包含以下 XML 格式的信息,如下所示。

  • 它包含有关消息结构和网络处理期间指令的信息。
  • SOAP 包含一个信封,在 XML 格式中表示消息的开始和结束。
  • 在消息中,头部是一个可选元素,其中包含特定于应用程序的信息,如身份验证、授权和付款等。
  • 故障元素是一个可选元素,它在信息处理过程中显示错误消息。

SOAP 的特点

  • 它是一种开放标准协议,在 Web 服务中通过 Internet 进行通信。
  • 它用于在网络上广播消息。
  • 它用于调用远程过程和交换文档。
  • 它可以在任何平台上使用,并支持多种语言。因此,它是平台和语言无关的。
  • 它使用 XML 格式通过 HTTP 协议发送消息。
  • SOAP 消息的结构包括一个信封、一个头部和一个正文元素。

SOAP 构建块

SOAP 构建块描述了发送到 Web 服务和客户端应用程序的 XML 数据。下图表示了 SOAP 构建块。

SOAP and REST Web Services

SOAP 信封:信封用于定义 SOAP 消息的开始和结束。它包含 SOAP 消息的详细信息。它是 XML 文档的一个重要元素。

SOAP 头部:这是一个可选元素,其中头部包含凭证信息,例如授权、身份验证等,用于在处理 SOAP 消息期间。

SOAP 正文:它是 SOAP 消息的一个重要元素,以 XML 格式包含请求和响应信息。它定义了要在客户端和 Web 服务器之间发送的消息的实际内容。

SOAP 故障:SOAP 故障元素是一个可选元素,用于显示在 SOAP 消息传输过程中遇到的错误消息。它保存 SOAP 消息的状态和错误。

以下是 SOAP 故障元素的子元素。

故障子元素描述
<faultcode>用于标识 SOAP 消息中的故障代码。
<faultstring>用于提供错误的人类可读描述。
<faultactor>SOAP 故障中的一个可选元素,用于指示消息在处理过程中发生的故障。
<detail>用于保存正文元素的特定于应用程序的状态错误。

SOAP 结构

以下代码表示 SOAP 结构。

SOAP 请求示例

SOAP 的优点

SOAP 协议的优点是

  • 它由 W3C 联盟推荐用于 Web 服务和应用程序编程接口与客户端应用程序通信。
  • 它是一种轻量级的通信协议,用于在网络上传输两个机器之间的数据。
  • 它是一个平台无关的操作系统,可以在 Linux、Windows 和 macOS 上运行。
  • SOAP 使用默认协议通过网络发送消息,所有 Web 应用程序也支持它。
  • 它具有 XML 格式,在消息处理过程中包含信封、头部、正文和故障元素作为 SOAP 消息。

SOAP 的缺点

SOAP 协议的缺点是

  • SOAP 仅在 Web 服务中使用 XML 格式数据,而 JSON 和其他轻量级格式不受支持。
  • 它很慢,因为它使用 XML 格式,而简单字符串消息的有效负载很大。
  • SOAP 规范中没有安全功能。
  • SOAP 客户端中没有远程对象的状态引用。

REST Web Service

REST 是 REpresentational State Transfer 的缩写。它是一种架构风格,在 Web 服务上的计算机系统之间提供标准。它是一组约束,用于创建轻量级、可扩展且可维护的 Web 服务,从而实现轻松通信。它是一组约束,用于创建轻量级、可扩展且可维护的 Web 服务,从而实现轻松通信。所有 Web 服务都基于 REST;因此,它被称为 RESTful 服务。开发 RESTful Web 服务 的目的是使 Web 服务更有效。Roy Fielding 在 2000 年开发了它,他也开发了 HTTP 协议。它不依赖于特定的协议来使用,但它使用 HTTP/HTTPS。

SOAP and REST Web Services

REST 的特点

  • 它是无状态服务器。
  • 它支持 JSON 和 XML。
  • 它比 SOAP 简单。
  • 它拥有维护良好的文档,反映了 REST 架构的每次更改。
  • 它是构建客户端和服务的一种简单方法。
  • 它遵循 HTTP、HTTPS 和 FTP 等标准协议。
  • 它提供了一种与服务器端应用程序连接的方式。
  • 它基于一种架构风格,与 SOAP 相比,可以设计出简单、轻量级且分布式的 Web 服务。
  • REST 系统的示例包括 - Google Glass API、Amazon Web Services、Atom、Tesla Model S。

REST 的约束和原则

  • 客户端-服务器
  • 无状态服务器
  • 可缓存
  • 统一接口
  • 分层系统

客户端-服务器模型

  • 客户端:客户端机器或用户向 Web 服务器发送特殊请求,并等待 Web 服务器的响应。
  • 服务器:服务器是 Web 资源的集合,为多个客户端提供不同的服务。它接收来自客户端机器的多个请求,并向客户端响应该请求。

无状态服务器:从客户端到服务器生成的每个请求都应包含服务器易于理解的所有必要信息。

缓存响应:从 Web 服务器收到的任何响应都必须验证该响应是否可缓存。缓存有助于客户端和服务器更快地响应,避免生成到 Web 服务器的流量。例如,当客户端反复向服务器发送相同的请求,而服务器已经响应过。然后,相同的请求将再次发送到服务器,从而增加整个网络的流量。

统一接口:这是表示 REST Web 服务如何与 HTTP 协议协同工作的技术。

  • 资源标识符 - URL/URI
  • 资源表示和操作 - 它定义了 URL 标识的数据资源。并且该数据可以直接通过客户端 URL 请求到服务器进行操作。
  • 它有助于管理客户端和服务器之间的通信。

分层系统

  • 它用于容纳代理服务器、防火墙、网关和缓存系统等额外层。
  • 按需代码:这是一个可选的按需代码约束,允许客户端请求并执行服务器的代码。此外,服务器可以将新功能部署到客户端机器。

REST Web 服务的 HTTP 方法

GET:用于从资源服务器获取信息。

POST:用于在资源服务器上创建或插入新信息。

DELETE:用于从资源服务器删除记录或信息。

PUT:用于在服务器上操作或更新现有记录。

REST 的优势

  • 与 SOAP 相比,REST Web 服务速度更快,因为它没有 SOAP 那样的限制。它消耗的带宽和资源更少。
  • 它是一种用于创建轻量级、可扩展且可维护的 Web 服务的架构风格。
  • 它是一种语言和平台无关的 Web 服务,可以用任何编程语言编写,并在 Windows、Linux 和 Mac 上运行。
  • REST Web 服务帮助客户端机从 Web 服务器访问不同格式的数据,如 HTML、JSON、XML 等。

SOAP 和 REST Web 服务之间的区别

SOAP Web 服务REST Web Service
它是简单对象访问协议的缩写。它是 REpresentational State Transfer 的缩写。
它是基于 XML 的消息传递协议。它不是一个协议。它是一个分布式超媒体系统的架构风格。
它需要更多的带宽和资源才能获得更好的 Web 性能。与 SOAP 相比,REST 需要更少的带宽和资源。
SOAP 强制使用 XML 作为消息格式。它不特别规定消息格式必须是 XML 或 JSON 等。
与 REST 相比,它的性能不高。与 SOAP 相比,它具有更好的性能,CPU 占用更少,代码量更少等。
SOAP 定义了自己的安全性。REST 继承了底层传输的安全性措施。
它不支持错误处理。它内置错误处理。
SOAP 是一种重量级的 XML 协议,需要更多的编码才能发送消息。它是轻量级、可扩展且可维护的。
它无法缓存。它可以缓存。
SOAP 消息被封装在信封中,并通过任何传输机制发送,如 SMTP、FTP、HTTP 或任何协议。它依赖于 HTTP 协议在两台机器之间进行通信。