📜  讨论WSDL(1)

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

讨论WSDL

WSDL(Web Services Description Language)是一种基于XML编写的网络服务描述语言,它用于描述WebService的地址、请求格式、响应格式等信息。

WSDL的特点
  • WSDL是基于XML的,易于解析和创建
  • WSDL提供了WebService的详细描述,方便客户端调用。
  • WSDL支持多种协议,如SOAP、HTTP、SMTP等。
WSDL文件的结构

WSDL文件通常由以下几部分组成:

  • types:定义WebService中使用的数据类型
  • message:定义WebService中使用的消息,即请求和响应的数据结构
  • portType:定义WebService中可用的端口类型,其中包含多个操作
  • binding:定义SOAP协议的绑定信息
  • service:定义WebService的访问地址和端口信息
一个简单的WSDL例子
<definitions name="MyService" targetNamespace="http://www.example.org/myservice"
    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:tns="http://www.example.org/myservice">

    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/myservice">
            <element name="AddRequest">
                <complexType>
                    <sequence>
                        <element name="x" type="int"/>
                        <element name="y" type="int"/>
                    </sequence>
                </complexType>
            </element>
            <element name="AddResponse">
                <complexType>
                    <sequence>
                        <element name="result" type="int"/>
                    </sequence>
                </complexType>
            </element>
        </schema>
    </types>

    <message name="AddRequest">
        <part name="parameters" element="tns:AddRequest"/>
    </message>

    <message name="AddResponse">
        <part name="parameters" element="tns:AddResponse"/>
    </message>

    <portType name="MyServicePortType">
        <operation name="Add">
            <input message="tns:AddRequest"/>
            <output message="tns:AddResponse"/>
        </operation>
    </portType>

    <binding name="MyServiceBinding" type="tns:MyServicePortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="Add">
            <soap:operation soapAction="http://www.example.org/myservice/Add"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>

    <service name="MyService">
        <port name="MyServicePort" binding="tns:MyServiceBinding">
            <soap:address location="http://localhost/myservice"/>
        </port>
    </service>
</definitions>

在这个例子中,我们定义了一个名为“MyService”的WebService,该服务包含一个名为“Add”的操作。客户端可以使用“http://localhost/myservice”地址访问该WebService。

总结

WSDL是一个非常重要的WebService描述语言,它提供了WebService的详细描述,方便客户端调用。程序员应该熟练掌握WSDL的语法和结构,以便更好地编写WebService和客户端代码。