📜  WSDL-简介(1)

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

WSDL-简介

WSDL (Web Services Description Language) 是一种 XML 格式的语言,用来描述 Web 服务的接口定义,它可以让使用 Web 服务的客户端知道所有可用的接口、方法和参数,并能理解这些参数的含义及使用方式。

WSDL文件结构

一个典型的 WSDL 文件结构主要由如下几个部分组成:

  • TargetNamespace:指定命名空间的名称,WSDL 中所有的元素都必须属于该命名空间。

  • Types:用于定义消息中的数据类型(XML Schema)。

  • Messages:定义各个操作(operation)的输入和输出消息格式。

  • PortType:定义一组逻辑上相关的操作集合,一个 PortType 可以包含多个 operation。

  • Binding:具体绑定允许在 HTTP、SMTP 等协议上使用 PortType 中定义的操作。

  • Port:将具体的地址(URI)与 Binding 的绑定相关联,从而形成一个服务绑定。

WSDL文件示例
<?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 的优势主要包括:

  • WSDL 是一种完全基于 XML 的语言,它可以跨平台和跨语言,可使用任意能够解析 XML 的编程语言来解析。

  • WSDL 可以生成客户端代码,在客户端编程时,只需引用 WSDL 文件就可以调用 Web 服务,而不需要自己编写与服务端相匹配的客户端代码。

  • WSDL 可以帮助客户端进行校验,保证客户端使用正确的数据类型和参数。

  • WSDL 可以被使用在 UDDI 注册表中,以便在一个统一的位置存储和访问所有的 Web 服务描述信息。

总之,WSDL 的出现使得 Web 服务更加规范化、重用化、可靠化和易于维护,有利于推广和应用 Web 服务技术。