wsdl 1.1 中 、 和 是定义服务契约的三个核心部分: 用 xml schema 声明数据类型; 定义请求/响应的消息结构,通过 引用 中的元素; 抽象声明操作接口,每个 关联 input/output 消息,三者共同构成抽象层,实现接口与协议、地址的解耦。

WSDL(Web Services Description Language)是一种基于 XML 的语言,用来描述 Web 服务的接口。其中 <types></types>、<message></message> 和 <porttype></porttype> 是 WSDL 1.1 中定义服务契约的三个核心部分,各自承担不同职责:
这部分声明服务中用到的所有数据结构,通常使用 XML Schema(XSD)来定义。它相当于“参数和返回值的‘模具’”。
- 可以内联写 XSD 定义(如
xs:element、xs:complexType) - 也可以通过
xsd:import引入外部 Schema 文件 - 目的是让客户端和服务端对数据格式达成一致,比如:
<xs:element name="getPriceRequest"> <xs:complexType> <xs:sequence> <xs:element name="itemID" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
每个 <message></message> 描述一次通信中传递的单向数据单元(可以是请求或响应),由一个或多个带名称的 <part></part> 组成。
-
<part></part>的element或type属性必须引用<types></types>中定义的元素或类型 - 一个操作通常对应两个 message:一个请求、一个响应
- 示例:
<message name="getPriceRequest"> <part name="parameters" element="tns:getPriceRequest"/> </message> <message name="getPriceResponse"> <part name="result" element="tns:getPriceResponse"/> </message>
它像 Java 中的 interface,只声明“有哪些操作”,不涉及传输协议或地址。每个 <operation></operation> 对应一个功能方法:
- 支持
input(请求消息)、output(响应消息)、fault(错误消息) -
input和output必须引用<message></message>中定义的消息名 - 示例:
<portType name="PricePortType"> <operation name="getPrice"> <input message="tns:getPriceRequest"/> <output message="tns:getPriceResponse"/> </operation> </portType>
这三个标签共同构成 WSDL 的抽象层(Abstract Definition),与后续的 <binding></binding>(协议绑定)和 <service></service>(地址部署)分离,实现接口定义与实现细节的解耦。










