简单对象访问协议 — SOAP
什么是 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 文档:
- SOAP信封将所有数据封装在消息中,并将 XML 文档标识为 SOAP 消息。
- Header元素包含有关 SOAP 消息的附加信息。例如,该信息可以是调用应用程序使用的身份验证凭证。
- 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 风格。
- 12-03
- 12-03
- 11-28
- 11-28
- 11-15
- 11-15
- 11-15
- 11-15
- 11-11
- 10-21
- 09-23
- 08-02
- 07-24
- 07-18
- 07-15
- 07-10