📅  最后修改于: 2023-12-03 15:35:45.291000             🧑  作者: Mango
WSDL (Web Services Description Language) 是一种 XML 格式的语言,用来描述 Web 服务的接口定义,它可以让使用 Web 服务的客户端知道所有可用的接口、方法和参数,并能理解这些参数的含义及使用方式。
一个典型的 WSDL 文件结构主要由如下几个部分组成:
TargetNamespace:指定命名空间的名称,WSDL 中所有的元素都必须属于该命名空间。
Types:用于定义消息中的数据类型(XML Schema)。
Messages:定义各个操作(operation)的输入和输出消息格式。
PortType:定义一组逻辑上相关的操作集合,一个 PortType 可以包含多个 operation。
Binding:具体绑定允许在 HTTP、SMTP 等协议上使用 PortType 中定义的操作。
Port:将具体的地址(URI)与 Binding 的绑定相关联,从而形成一个服务绑定。
<?xml version="1.0"?>
<definitions name="MyService" targetNamespace="http://example.com/myservice.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Types -->
<types>
<xsd:schema targetNamespace="http://example.com/myservice.xsd">
<xsd:element name="helloRequest" type="xsd:string"/>
<xsd:element name="helloResponse" type="xsd:string"/>
</xsd:schema>
</types>
<!-- Messages -->
<message name="SayHelloRequest">
<part name="parameters" element="tns:helloRequest"/>
</message>
<message name="SayHelloResponse">
<part name="parameters" element="tns:helloResponse"/>
</message>
<!-- Port Type -->
<portType name="MyService">
<operation name="SayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<!-- Binding -->
<binding name="MyServiceBinding" type="tns:MyService">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="SayHello">
<soap:operation soapAction="sayHello"/>
<input>
<soap:body use="encoded" namespace="http://example.com/myservice.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="http://example.com/myservice.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<!-- Port -->
<service name="MyService">
<port name="MyServicePort" binding="tns:MyServiceBinding">
<soap:address location="http://example.com/myservice"/>
</port>
</service>
</definitions>
WSDL 的优势主要包括:
WSDL 是一种完全基于 XML 的语言,它可以跨平台和跨语言,可使用任意能够解析 XML 的编程语言来解析。
WSDL 可以生成客户端代码,在客户端编程时,只需引用 WSDL 文件就可以调用 Web 服务,而不需要自己编写与服务端相匹配的客户端代码。
WSDL 可以帮助客户端进行校验,保证客户端使用正确的数据类型和参数。
WSDL 可以被使用在 UDDI 注册表中,以便在一个统一的位置存储和访问所有的 Web 服务描述信息。
总之,WSDL 的出现使得 Web 服务更加规范化、重用化、可靠化和易于维护,有利于推广和应用 Web 服务技术。