SOAP与WSDL核心技术讲义

来源信息

  • original_path: /田浩然上传的资料/0_WebServices/SAOPWSDL.pdf
  • file_size: 564.96 KB
  • pages: 93
  • author: 郁莲(北京大学软件与微电子学院)
  • processed_date: 2026-09-29
  • method: PDF文本提取
  • status: done

核心内容概述

这是北京大学软微学院《Web Services Technologies》课程的第三章讲义,系统讲解SOAP和WSDL两大Web Services核心技术。


一、SOAP模型

1.1 SOAP消息结构

SOAP消息是一个XML文档,根元素称为Envelope(信封)。包含两个子元素:

  • Header:可选,用于传递扩展信息(安全、事务、路由等)
  • Body:必需,承载应用负载

1.2 SOAP节点角色

  • Sender:消息发送方
  • Next:中间处理节点
  • UltimateReceiver:最终消费消息的Web Service

1.3 SOAP Server架构

入站消息经过:

  1. 网络协议→SOAP文本消息转换
  2. Header处理栈(安全、事务等handler)
  3. 应用负载到达调度机制
  4. 后端服务执行计算
  5. 响应消息沿栈下行,插入必要Header
  6. 编码为网络协议发送

二、SOAP规范要点

2.1 SOAP定义

XML-based协议,包含三部分:

  • Envelope:定义消息框架
  • Encoding rules:应用数据类型的编码规则
  • RPC约定:远程过程调用表示

2.2 SOAP消息示例

<env:Envelope xmlns:env="http://www.w3.org/2002/06/soap-envelope">
  <env:Header>
    <tx:transaction-id xmlns:tx="http://transaction.example.org" 
                       env:mustUnderstand="true">decd7461...</tx:transaction-id>
  </env:Header>
  <env:Body>
    <bank:credit-account>
      <bank:account>12345678</bank:account>
      <bank:amount currency="usd">123.45</bank:amount>
    </bank:credit-account>
  </env:Body>
</env:Envelope>

三、SOAP Header属性

3.1 role属性

控制Header块的目标节点:

  • role/none:不应被任何节点处理
  • role/next:发给下一个SOAP节点
  • role/ultimateReceiver:发给最终接收者

3.2 mustUnderstand属性

设为true时,要求接收节点必须能正确处理该Header,否则应返回Fault。

3.3 encodingStyle属性

声明内容的编码方式,告知接收方如何解码。


四、SOAP编码与RPC

4.1 SOAP编码

将应用层数据转换为XML格式,遵循SOAP Data Model规则。

4.2 SOAP RPC

  • 请求元素名为procedure name
  • 响应元素名为procedure name + Response
  • 支持多语言的过程调用语义

4.3 SOAP Fault错误码

Fault Code描述
VersionMismatchSOAP版本不兼容
MustUnderstand无法处理mustUnderstand=true的Header
DataEncodingUnknown无法解析数据编码
Sender发送方传播了畸形消息
Receiver接收方因应用故障无法处理

五、WSDL(Web Services Description Language)

5.1 WSDL核心概念

  • Service:一组相关端点的集合
  • Port Type:操作集合(相当于接口定义)
  • Operation:单个请求-响应对
  • Message:消息定义
  • Port Type Operation:具体操作定义
  • Binding:协议和数据格式绑定
  • Service Binding:特定端口地址

5.2 WSDL文档结构

<definitions>
  <types>          <!-- 数据类型定义 -->
  <message>        <!-- 消息定义 -->
  <portType>       <!-- 操作集合 -->
  <binding>        <!-- 协议绑定 -->
  <service>        <!-- 服务定义 -->
</definitions>

六、SOAP与REST架构

6.1 SOAP vs REST

  • SOAP:重量级、严格规范、适合企业级事务处理
  • REST:轻量级、基于HTTP动词、适合Web友好型交互

6.2 趋势判断

  • SOAP RPC在旧工具包中较流行
  • 现代Web Services社区倾向文档导向的粗粒度交互
  • RESTful Web Services更适合纯信息检索场景

关键概念总结

  1. SOAP Envelope:消息容器,包含Header和Body
  2. Header属性:role、mustUnderstand、encodingStyle
  3. SOAP Fault:标准化错误传输机制
  4. WSDL:Web Service接口描述语言
  5. SOAP RPC vs Document:过程调用 vs 文档导向

与其他知识关联