乐途乐途
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
  • 学习路径
  • XML 基础语法

    • XML 概述
    • XML 文档结构
    • XML 元素
    • XML 属性
    • XML 语法规则
    • XML 命名空间
    • XML 注释与处理指令
  • DTD 与文档验证

    • DTD 概述
    • DTD 元素声明
    • DTD 属性声明
    • DTD 实体声明
    • DTD 元素与属性对比
    • DTD 完整示例
  • XML Schema 定义

    • XML Schema 概述
    • XSD 简单类型
    • XSD 复杂类型
    • XSD 命名空间与引用
  • XPath 节点定位

    • XPath 概述
    • XPath 路径表达式
    • XPath 谓词与函数
  • XSLT 转换

    • XSLT 概述
    • XSLT 模板与匹配
    • XSLT 控制结构
    • XSLT 输出控制
  • XML 解析技术

    • XML 解析概述
    • DOM 解析
    • SAX 解析
    • StAX 解析
    • XML 与 Java — JAXP
  • XML 在 Java 中的应用

    • Spring XML 配置
    • MyBatis XML 映射
    • pom.xml 与 Maven
    • web.xml 配置详解
  • 现代数据格式对比

    • XML 与 JSON 对比
    • XML 与 YAML 对比
  • XML 显示与浏览器集成

    • XML 在浏览器中的显示
    • XMLHttpRequest 与 AJAX
    • 服务器端 XML 处理
  • XML 进阶查询与链接

    • XQuery 查询语言
    • XLink 超链接
    • XML 验证工具使用
  • XML Web 服务(选读)

    • XML Web 服务概述
    • SOAP 协议详解
    • WSDL 服务描述
    • RSS 内容聚合
    • RDF 资源描述框架

XML Web 服务概述

⚠️ 本章为选读内容

本章定位 :建立对 XML Web 服务的全局认知——理解 Web 服务架构(UDDI/WSDL/SOAP 三角模型)、服务发布/发现/使用完整闭环,以及 XML 在其中的枢纽作用。

定义与作用

XML Web 服务 (XML Web Services)是一种跨平台、跨语言的远程调用技术。它将应用程序的功能封装为可通过 Web 协议(HTTP)访问的服务,使用 XML 作为数据交换的通用格式。

核心思想:不同平台的应用(Java、.NET、Python)能像"拼积木"一样互相调用,XML 是积木之间的"通用胶水"。

Web 服务的本质是:用 HTTP 承载 XML 消息,实现跨语言、跨平台的方法调用。

核心原理:Web 服务三角架构

图解释 :Web 服务遵循"三角模型":UDDI 注册中心(可选)帮助消费者发现服务;WSDL 描述服务的接口(方法名、参数类型);SOAP 是实际调用的 XML 消息格式。三者的关系就像:UDDI=黄页,WSDL=说明书,SOAP=信封。

语法/结构要点

Web 服务的三大核心标准

标准全称作用XML 关系
SOAPSimple Object Access Protocol定义请求/响应的 XML 消息结构完全基于 XML
WSDLWeb Services Description Language描述服务的接口、参数、返回类型基于 XML 的接口定义语言
UDDIUniversal Description, Discovery and Integration服务的注册与发现机制使用 XML 描述注册信息

Web 服务的优势

特性说明
跨平台Java 客户端可以调用 .NET 服务,反之亦然
基于标准基于 W3C 开放标准,不绑定特定厂商
松耦合客户端只依赖 WSDL,服务端实现可任意更换
可组合多个 Web 服务可组合成更复杂的业务流程

完整示例

场景说明

飞翔科技需要向外部合作伙伴提供一个"订单状态查询"接口。白歌设计用 Web 服务暴露接口——合作伙伴的系统可能是 Java、.NET 或 PHP,但都能通过 SOAP/XML 调用。

SOAP 请求(查询订单状态)

客户端发送:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
  xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
  xmlns:ord="http://www.feixiang.com/order">
  <soap:Header>
    <ord:auth>
      <ord:apiKey>FX-2026-KEY-001</ord:apiKey>
    </ord:auth>
  </soap:Header>
  <soap:Body>
    <ord:QueryOrderStatus>
      <ord:orderId>1001</ord:orderId>
    </ord:QueryOrderStatus>
  </soap:Body>
</soap:Envelope>

SOAP 响应

服务器返回:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
  xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
  xmlns:ord="http://www.feixiang.com/order">
  <soap:Body>
    <ord:QueryOrderStatusResponse>
      <ord:orderId>1001</ord:orderId>
      <ord:status>已发货</ord:status>
      <ord:trackingNumber>SF1234567890</ord:trackingNumber>
      <ord:estimatedDelivery>2026-06-12</ord:estimatedDelivery>
    </ord:QueryOrderStatusResponse>
  </soap:Body>
</soap:Envelope>

WSDL 片段(接口定义)

<wsdl:definitions name="OrderService"
  targetNamespace="http://www.feixiang.com/order"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

  <wsdl:message name="QueryOrderStatusRequest">
    <wsdl:part name="orderId" type="xsd:string"/>
  </wsdl:message>

  <wsdl:message name="QueryOrderStatusResponse">
    <wsdl:part name="result" type="ord:OrderStatus"/>
  </wsdl:message>

  <wsdl:portType name="OrderPortType">
    <wsdl:operation name="QueryOrderStatus">
      <wsdl:input message="tns:QueryOrderStatusRequest"/>
      <wsdl:output message="tns:QueryOrderStatusResponse"/>
    </wsdl:operation>
  </wsdl:portType>
</wsdl:definitions>

操作结果

要素角色内容
SOAP消息载体XML 格式的请求和响应,包含订单 ID 和状态信息
WSDL接口契约定义 QueryOrderStatus 方法的参数和返回类型
UDDI服务目录(可选)合作伙伴可在此发现飞翔科技提供的所有 Web 服务

易错场景

Web 服务 ≠ 网站

Web 服务是 程序对程序 的通信(机器读 XML),不是给人看的网页。它的目标是让程序间互相调用,而非展示页面。

混淆 RESTful API 和 SOAP Web 服务

对比维度SOAP Web 服务RESTful API
数据格式仅 XMLXML / JSON / 任意
协议HTTP + SOAP 信封HTTP 动词 (GET/POST/PUT/DELETE)
接口描述WSDLOpenAPI / Swagger
学习曲线陡峭平缓

现代开发中 RESTful API 更流行,但 SOAP 在企业级应用(银行、保险、ERP)中仍大量存在。

UDDI 的"理想与现实"

UDDI 在理论上是一个公共的服务注册中心(类似 DNS),但在实践中从未达到互联网级别的规模。现代微服务架构中,服务注册发现由 Consul、etcd、Nacos 等替代。

面试考点

考点参考答案要点
Web 服务的三角模型是什么?UDDI(发现)— WSDL(描述)— SOAP(通信),三者围绕 XML 协作
SOAP 和 WSDL 各自的作用?SOAP 是消息格式(请求/响应的 XML 信封);WSDL 是接口定义(有哪些方法、参数类型、返回类型)
Web 服务为什么能跨语言?因为所有通信都序列化为 XML 文本——任何语言都有 XML 解析器,HTTP 协议通用
Web 服务与 RESTful API 的核心差异?Web 服务基于 SOAP/WSDL,强类型约束;RESTful 基于 HTTP 动词,更轻量。现代倾向于 RESTful
下一页
SOAP 协议详解