简单对象访问协议 — SOAP

时间:2024-03-22
新悦网络

编辑:

什么是 SOAP(简单对象访问协议)?

SOAP(简单对象访问协议)是一种消息协议,使应用程序的分布式元素能够进行通信。SOAP 可以承载多种标准协议,包括与 Web 相关的超文本传输​​协议 ( HTTP )。

SOAP 是作为具有不同编程语言的应用程序的中间语言而开发的,使这些应用程序能够通过 Internet 相互通信。SOAP 灵活且独立,这使得开发人员能够用不同的语言编写 SOAP 应用程序编程接口 ( API ),同时添加特性和功能。

SOAP 是一种轻量级协议,用于创建 Web API,通常使用可扩展标记语言 ( XML )。它支持多种互联网通信协议、HTTP、简单邮件传输协议 (SMTP) 和传输控制协议。SOAP 方法定义了 SOAP 消息的处理方式、包含的功能和模块、支持的通信协议以及 SOAP 消息的构造。SOAP 使用 XML 信息集作为消息格式,并依赖于应用层协议(如 HTTP)进行消息传输和协商。

SOAP 构建块和消息结构示例

简单对象访问协议作为一种规范,定义了发送到 Web 服务和客户端应用程序的 SOAP 消息。SOAP 消息是由以下三个基本构建块组成的 XML 文档:

  1. SOAP信封将所有数据封装在消息中,并将 XML 文档标识为 SOAP 消息。
  2. Header元素包含有关 SOAP 消息的附加信息。例如,该信息可以是调用应用程序使用的身份验证凭证。
  3. Body元素包括需要从 Web 服务发送到调用应用程序的实际消息的详细信息。该数据包括呼叫和响应信息。

故障消息是可选的第四个构建块。如果生成 SOAP 错误,则会以 HTTP 500 错误的形式返回。故障消息包含故障代码、字符串、参与者和详细信息。

 

 

SOAP 是如何工作的?

SOAP 请求很容易生成和处理响应。首先,客户端使用 XML 文档生成服务请求。接下来,SOAP 客户端将 XML 文档发送到 SOAP 服务器。当服务器收到 SOAP 消息时,它会将该消息作为服务调用发送到所请求的服务器端应用程序。包含所请求参数、返回值和客户端数据的响应首先返回到 SOAP 请求处理程序,然后返回到发出请求的客户端。SOAP 请求和响应均使用安全超文本传输​​协议 ( HTTPS ) 或类似的协议(如 HTTP)进行传输。

SOAP 的优点和缺点

SOAP 是面向服务的体系结构 ( SOA ) 和Web 服务规范的一个组成部分。

SOAP 的优点包括以下几点:

  • 独立于平台和操作系统。SOAP 可以通过多种协议承载,从而支持 Windows 和 Linux 上使用不同编程语言的应用程序之间的通信。
  • 适用于 HTTP 协议。尽管 SOAP 可与许多不同的协议配合使用,但 HTTP 是 Web 应用程序使用的默认协议。
  • 可以通过不同的网络和安全设备进行传输。SOAP 可以轻松地穿过防火墙,而其他协议可能需要特殊的调节。

然而,其缺点包括以下几点:

  • 没有通过引用传递数据的规定。如果同时传递同一对象的多个副本,这可能会导致同步问题。
  • 速度。SOAP的数据结构基于XML。XML 在很大程度上是人类可读的,这使得理解 SOAP 消息变得相当容易。然而,与通用对象请求代理架构 (CORBA) 及其容纳二进制数据的远程过程调用 ( RPC ) 协议相比,这也使得消息相对较大。因此,CORBA 和 RPC 速度更快。
  • 不像其他方法那么灵活。尽管 SOAP 很灵活,但较新的方法(例如 RESTful 架构)使用 XML、JavaScript 对象表示法、YAML或任何所需的解析器,这使得它们比 SOAP 更灵活。

SOAP API

SOAP 是一种几乎总是在 Web 服务或 SOA 框架上下文中使用的协议。因此,它的 API 通常被 SOA 的更高级别接口隐藏。SOA API中间件工具可用于几乎所有现代编程语言,并且 Microsoft 提供了各种 .NET SOAP 和 SOA 工具。

SOAP 与 REST

SOAP 旨在将传统的整体应用程序分解为多组件、分布式形式,而不会失去安全性和控制力。相比之下,表述性状态传输 ( REST ) 是一种基于 HTTP 协议和 Web 服务器支持客户端的方式的分布式计算交互模型。基于 HTTP 的 REST 几乎始终是现代微服务开发和通信的基础。RESTful API 使用 HTTP 请求来获取、放置、发布和删除数据。

REST over HTTP 简单、灵活、轻量,除了提供一种交换信息的方式之外,几乎没有提供什么。SOAP 也可以依赖于 HTTP,但它连接了一组复杂的分布式计算工具的元素(Web 服务和 SOA 框架)以及应用程序组件,这构成了整个面向服务的框架的一部分。

简单对象访问协议的未来

SOAP 是第一个广泛使用的用于在面向服务的体系结构中连接 Web 服务的协议。如今,分布式应用程序的现代开发很大程度上基于 RESTful 原则。SOAP 几乎总是局限于遗留平台。SOAP 仍在使用的一个领域是处理在线事务的应用程序,因为它是一种更加严格且由协议驱动的 API 风格。

最新内容

知识库