📜  WSDL-元素(1)

📅  最后修改于: 2023-12-03 15:06:02.704000             🧑  作者: Mango

WSDL 元素

WSDL (Web Services Description Language) 是一种用于描述 Web 服务的 XML 格式。WSDL 文档定义了 Web 服务的接口、方法、参数和消息的详细信息。

WSDL 文档通常包含以下元素:

types 元素

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 元素

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 元素

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 元素

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 元素

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 服务提供了一种标准的描述方式,使客户端和服务端都能够通过交换元素定义来理解彼此。