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架构
入站消息经过:
- 网络协议→SOAP文本消息转换
- Header处理栈(安全、事务等handler)
- 应用负载到达调度机制
- 后端服务执行计算
- 响应消息沿栈下行,插入必要Header
- 编码为网络协议发送
二、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 | 描述 |
|---|---|
| VersionMismatch | SOAP版本不兼容 |
| 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更适合纯信息检索场景
关键概念总结
- SOAP Envelope:消息容器,包含Header和Body
- Header属性:role、mustUnderstand、encodingStyle
- SOAP Fault:标准化错误传输机制
- WSDL:Web Service接口描述语言
- SOAP RPC vs Document:过程调用 vs 文档导向
与其他知识关联
- Core-Python-Programming-Wesley-J-Chun - Python Web开发
- J2EE-Web-Services-Richard-Monson-Haefel - J2EE Web Services模式
- XML基础-Web-Services核心技术讲义 - XML基础
- 《Patterns-SOA-and-Web-Services》—IBM红皮书经典SOA著作 - SOA模式