SOAP 和 REST Web 服务介绍


SOAP 和 REST Web 服务介绍

SOAP 网络服务

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

SOAP 和 REST Web 服务

SOAP消息:

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

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

SOAP 的特性

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

SOAP 构建块

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

SOAP 和 REST Web 服务

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

SOAP Header:它是一个可选元素,其中包含在 SOAP 消息处理过程中使用的授权、认证等凭据信息。

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

SOAP Fault: SOAP Fault 元素是一个可选元素,用于显示在 SOAP 消息传输期间遇到的错误消息。它保存 SOAP 消息和错误的状态。

以下是 SOAP Fault 元素的子元素。

Sub Fault Element Description
它用于识别 SOAP 消息中的故障代码。
它用于提供人类可读的错误描述。
它是 SOAP Fault 中的一个可选元素,指示在处理消息期间发生的错误。
它用于保存 Body 元素的应用程序特定状态错误。

SOAP结构:

以下代码表示 SOAP 结构。

<?xml version="1.0"?>  
<SOAP:Envelope  
xmlns:SOAP="http://www.w3.org/2003/05/SOAP-envelope/"  
SOAP:encodingStyle="http://www.w3.org/2003/05/SOAP-encoding">  

<SOAP:Header>  
...  
</SOAP:Header>  

<SOAP:Body>  
...  
  <SOAP:Fault>  
  ...  
  </SOAP:Fault>  
</SOAP:Body>  

</SOAP:Envelope>

SOAP 请求示例

<?xml version = "1.0"?>  
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlSOAP.org/SOAP/envelope/">  
    <SOAP-ENV:Header/>  
    <SOAP-ENV:Body>  
        <ns2:getCourseDetailsResponse xmlns:ns2="http://in28minutes.com/courses">  
            <ns2:course>  
                <ns2:id>Course1</ns2:id>  
                <ns2:name>Spring</ns2:name>  
                <ns2:description>10 Steps</ns2:description>  
            </ns2:course>  
        </ns2:getCourseDetailsResponse>  
    </SOAP-ENV:Body>  
</SOAP-ENV:Envelope>

SOAP的优点

SOAP 协议的优点是:

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

SOAP 的缺点

SOAP 协议的缺点是:

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

REST 网络服务

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

SOAP 和 REST Web 服务

REST特征

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

Constraint和 REST 的原则

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

客户端 - 服务器模型:

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

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

缓存响应:从 Web 服务器收到的任何响应都必须验证响应是否可缓存。缓存可以帮助客户端和服务器更快地响应,以免向 Web 服务器生成流量。例如,当客户端在服务器上重复询问相同的请求时,该请求已经被服务器响应。同样,相同的请求将发送到服务器,这会增加整个网络的流量。

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

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

分层系统

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

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 网络服务 REST 网络服务
它代表简单对象访问协议。 它代表REpresentational State Transfer。
它是基于 XML 的消息传递协议。 它不是一个协议。它是分布式超媒体系统的一种架构风格。
它需要更多的带宽和资源才能获得更好的 Web 性能。 与 SOAP 相比,REST 需要更少的带宽和资源。
SOAP 将 XML 强制为消息格式。 没有特别规定消息格式必须是 XML 或 JSON 等。
与 REST 相比,它的性能并不好。 与 SOAP 相比,它具有更好的性能、更少的 CPU 密集度、更少的代码等。
SOAP 定义了它的安全性。 REST 从底层传输继承安全措施。
它不支持错误处理。 它具有内置的错误处理功能。
SOAP 是一种重量级的 XML 协议,需要更多的编码才能发送消息。 它是一个轻量级、可扩展和可维护的。
它不能被缓存。 它可以被缓存。
SOAP 消息被包装在一个信封中并发送到任何传输机制,例如 SMTP、FTP、HTTP 或任何协议。 它依赖于 HTTP 协议在两台机器之间进行通信。