什么是 SOAP?XML 消息和 Web 服务解释
无抓取抓取 API 提供特定任务的接口,返回适用于应用程序工作流程的结构化公共 Web 数据。
TL;DR
- SOAP 是一种用于结构化消息交换的协议。 它的消息传递框架由 XML 定义,并可以绑定到底层传输。
- SOAP 消息具有一个信封和主体。 可选的头部携带扩展,如路由、安全或事务上下文。
- SOAP Fault 提供标准错误容器。 应用程序仍然定义特定领域的故障详细信息和政策。
- WSDL 通常描述 SOAP 服务。 它可以定义操作、消息、绑定和工具以及生成的客户端的地址。
- SOAP 在正式合同和消息标准重要的地方仍然很有用。 它也比许多简单的 HTTP API 需要更多的协议和工具复杂性。
SOAP 定义
SOAP 是一种协议和可扩展的消息框架,用于在分布式系统中交换结构化信息。SOAP 消息使用 XML,并包含一个将文档标识为 SOAP 消息的信封。信封可以包含头部,必须包含主体。SOAP 定义处理规则和故障结构,而特定于应用程序的操作和数据由服务合同定义。
SOAP 不仅仅是“通过 HTTP 发送的 XML。”该框架可以绑定到不同的底层协议,其头部模型允许独立特性参与消息处理。 W3C SOAP 版本 1.2 消息框架 定义消息结构、处理模型、可扩展性和故障。HTTP 是一种常见的绑定,但消息模型是定义层。
SOAP 交换的基本结构
一个关于什么是 SOAP 的有用模型从发起事件开始,跟踪工作到返回的结果。划分这条路径可以防止一个缓慢或失败的阶段被归咎于另一个。
信封和命名空间
信封是文档元素,并使用所选版本的 SOAP 命名空间。命名空间将 SOAP 元素与应用程序词汇和其他扩展区分开。接收者使用命名空间和处理规则来正确解释消息。
头部和中介
可选的头部块携带与应用程序主体分开的特性。属性可以标识预期的处理角色以及是否理解该块是强制性的。中介可以在转发消息之前处理针对其角色的头部。
主体和故障
主体携带最终接收者的信息,通常是由应用程序定义的操作请求或响应。当处理失败时,SOAP Fault 提供代码、原因、角色或节点上下文以及应用程序详细信息的标准结构。
SOAP,WSDL,XML Schema 和 WS-*
当行描述相同层时,比较才有意义。此表将什么是 SOAP 放在与它最可能混淆的概念旁边。
| 概念 | 含义 | 实际信号 |
|---|---|---|
| SOAP | 定义 XML 消息框架和处理规则。 | 信封、头部、主体、故障、角色和协议绑定。 |
| WSDL | 描述服务接口和部署绑定。 | 操作、消息、类型、端点和协议细节。 |
| XML Schema | 定义 XML 词汇和数据类型约束。 | 元素、属性、复杂类型、出现和验证。 |
| WS-Security | 定义随 SOAP 消息携带的安全信息。 | 签名、加密引用和安全令牌。 |
| 政策规范 | 描述服务周围的能力或要求。 | 工具和组织可以评估的断言。 |
SOAP 仍适用的地方
SOAP的使用案例在规模和受众上各有不同,但每个案例都依赖于特定的合同或性能属性。这些要素强调了这种依赖性。
合同驱动的企业集成
正式的描述和生成的客户端帮助组织协调跨语言和供应商的稳定接口。
消息级安全
某些工作流需要签名或加密的消息部分,这些部分在一个传输连接之外保持有意义。
既定行业标准
长期存在的金融、政府、电信和商业协议可能已经定义了SOAP消息和策略。
中介处理
头角色支持消息路径,其中基础设施在最终接收者之前处理定义的块。
是什么让SOAP在操作上不同
SOAP合同可以支持严格的互操作性,但整个堆栈必须对版本、绑定、命名空间、模式解释和策略配置达成一致。生成的代码减少了手动处理XML,但生成的客户端可以很大并且可能隐藏在诊断过程中所需的线行为。在受保护的可观察性系统中保留捕获的消息和相关标识符。
消息安全和传输安全解决不同的问题。TLS保护对等方之间的连接。消息级机制可以对选定的XML内容进行签名或加密,从而使保护和验证能够存活于中介或存储中。这些机制需要仔细的密钥管理、规范化、算法策略、时钟处理和验证;它们应来自既定的库和配置。
模式验证是有用的,但不够充分。一条消息可以满足XML模式,但仍然违反业务规则或授权策略。 WSDL 2.0规范 定义服务描述组件,而运行时代码仍然必须验证身份、权限、状态转移和资源限制。
SOAP集成问题预期
- 混合SOAP版本。 信封命名空间、HTTP绑定和故障细节不同,因此客户端和服务必须就版本达成一致。
- 通过字符串连接编辑生成的XML。 命名空间处理、转义、元素顺序和签名使手动构建脆弱且不安全。
- 将成功的HTTP状态视为业务成功。 SOAP主体可能包含故障或报告操作失败的应用响应。
- 在没有控制的情况下记录敏感的信封。 头和主体可以包含凭证、标识符、个人数据和签名内容。
- 假设每个WS-*功能都是必需的。 仅使用互操作性和安全模型所要求的标准;未使用的层会增加成本。
安全地使用SOAP服务
从权威的WSDL、模式、绑定文档和端点策略开始。生成或配置一个支持所需SOAP版本和扩展的维护库的客户端。在编写业务逻辑之前,确认确切的操作、消息样式、端点地址、证书和安全配置。
使用一个效果安全且可以理解的小代表性请求进行验证。检查序列化的信封、所需的命名空间、头、内容类型、操作元数据和响应故障行为。不要在共享示例中放置真实凭证或敏感生产值。保持测试环境和服务证书的清晰分隔。
如果下游系统不需要SOAP概念,请在内部边界后标准化结果。在保持原始相关性和支持所需状态元数据的同时,将领域字段和错误映射到稳定的应用类型。这样做可以包含协议复杂性,而不假装SOAP故障和应用结果是可以互换的。
什么是SOAP审查清单
使用这些检查将SOAP的定义转化为开发人员、操作员或审查员可以重现的实施证据。
- 重申边界。 对于SOAP,识别调用者、提供者、路径和标记完整结果的确切事件。
- 验证中心主张。 使用实现及其文档确认此声明:SOAP是一种用于结构化消息交换的协议。它的消息框架是用XML定义的,可以绑定到底层传输。
- 追踪机制。 观察信封和命名空间、头和中介、主体和故障,并记录每个阶段所属的组件。
- 检查最近的区别。 记录为什么SOAP在该系统中意味着“定义XML消息框架和处理规则。”
- 测试一个代表性用例。 使用合同驱动的企业集成,带着现实的数据、位置、数量和权限边界。
- 防范已知错误。 审查“混合SOAP版本。”并添加一个接受检查以捕获它。
- 界定工作负载。 为什么是SOAP设置适当的主题限制,包括有效载荷、并发、执行时间和适用的存储输出。
- 记录决定。 解释为什么为什么是SOAP符合这个边界,并命名可以证明不同方法的证据。
结论
为什么是SOAP应该描述设计的可测试部分,而不是作为邻近行为的松散标签。评审应该保留这个中心决定:SOAP是用于结构化消息交换的协议。它的消息框架是用XML定义的,并可以绑定到底层传输。它还应该防止混合SOAP版本,并保持为什么是SOAP的访问在接口或网络的文档政策范围内。
准备好构建您的网络数据工作流了吗?
将一个测量的为什么是SOAP的获取或集成步骤连接到上述描述的验证和存储实践。
今天注册并获得 $5的免费信用 — 无需信用卡.
领取您的$5信用→常见问题解答
SOAP代表什么?
SOAP最初扩展为简单对象访问协议,但现代规范将SOAP作为名称。它定义了一个基于XML的消息框架,用于分布式信息交换。
SOAP需要HTTP吗?
不。SOAP定义了一个可以绑定到底层协议的消息框架。HTTP是一个常见绑定,但SOAP消息和处理模型与HTTP不同。
什么是SOAP信封?
SOAP信封是标识XML文档为SOAP消息的文档元素。它可以包含头部,并且必须包含主体,携带最终接收者的信息。
WSDL是SOAP的一部分吗?
WSDL是一个单独的网络服务描述语言,通常与SOAP一起使用。它可以描述操作、消息、类型、绑定和SOAP工具使用的服务地址。