📅  最后修改于: 2023-12-03 15:06:02.704000             🧑  作者: Mango
WSDL (Web Services Description Language) 是一种用于描述 Web 服务的 XML 格式。WSDL 文档定义了 Web 服务的接口、方法、参数和消息的详细信息。
WSDL 文档通常包含以下元素:
types 元素包含定义复杂类型的 XML 架构的解析信息。可以在 types 元素中定义命名空间,并包含在 Web 服务过程中使用的 XML 标记。
例如:
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Address" type="xs:string"/>
<xs:element name="City" type="xs:string"/>
<xs:element name="State" type="xs:string"/>
<xs:element name="Zip" type="xs:string"/>
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element ref="Address"/>
<xs:element ref="City"/>
<xs:element ref="State"/>
<xs:element ref="Zip"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
其中的 xs:schema 定义了一个 XML 架构,其中定义了 Address、City、State、Zip 四个元素和一个 AddressType 复杂类型。
message 元素定义了在 Web 服务之间传递的消息。每个消息都由一组命名参数组成,每个参数都由一个名称和一个类型定义组成。其中参数可能的类型限制为基本类型或复杂类型。
例如:
<wsdl:message name="AddRequest">
<wsdl:part name="a" type="xs:int"/>
<wsdl:part name="b" type="xs:int"/>
</wsdl:message>
其中的 name 定义了消息的名称,两个 part 定义了消息的参数,分别是 a 和 b,类型均为 xs:int。
portType 定义了所有可从 Web 服务访问的操作的集合。每个操作都与一个输入消息和一个输出消息相关联。操作可以是单向、请求-响应或异步。
例如:
<wsdl:portType name="Calculator">
<wsdl:operation name="Add">
<wsdl:input message="tns:AddRequest"/>
<wsdl:output message="tns:AddResponse"/>
</wsdl:operation>
<wsdl:operation name="Subtract">
<wsdl:input message="tns:SubtractRequest"/>
<wsdl:output message="tns:SubtractResponse"/>
</wsdl:operation>
</wsdl:portType>
其中的 name 定义了 portType 的名称,Add 和 Subtract 是可用操作的名称,tns:AddRequest、tns:AddResponse、tns:SubtractRequest、tns:SubtractResponse 是输入和输出消息的名称。
binding 元素描述了端口类型的具体绑定,以及如何将消息转换为协议格式。它可以用于指定要使用的协议和绑定可用于端口的方式。
例如:
<wsdl:binding name="CalculatorBinding" type="tns:Calculator">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Add">
<soap:operation soapAction="http://localhost/CalculatorService/Add"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
其中的 name 定义了 binding 的名称,Calculator 是与之相关联的 portType 的名称。soap:binding 定义了指定的协议和绑定的方式。wsdl:operation 定义了具有特定输入和输出消息的操作,每个操作都可以使用 soap:operation 和 soap:body 定义其消息。
service 元素定义了 Web 服务的端点和与其通信的协议。每个服务都在一个或多个端口上公开。
例如:
<wsdl:service name="CalculatorService">
<wsdl:port name="CalculatorPort" binding="tns:CalculatorBinding">
<soap:address location="http://localhost/CalculatorService"/>
</wsdl:port>
</wsdl:service>
其中的 name 定义了服务的名称,CalculatorService 是服务名称。wsdl:port 定义了名称为 CalculatorPort 的端口,tns:CalculatorBinding 是将用于端口的绑定。soap:address 定义了将用于访问服务的 URL。
总之,WSDL 元素为 Web 服务提供了一种标准的描述方式,使客户端和服务端都能够通过交换元素定义来理解彼此。