Web 服务描述语言(Web Services Description Language,WSDL)提供了一种描述 Web 服务(大多使用 SOAP)的简单方法。WSDL 允许您描述利用 SOAP 标准所提供的服务和接口。比方说,可以创建描述某台服务器上提供的服务的 WSDL 文件,然后把该文件分发给需要这些服务的 W
Web 服务描述语言(Web Services Description Language,WSDL)提供了一种描述 Web 服务(大多使用 SOAP)的简单方法。WSDL 允许您描述利用 SOAP 标准所提供的服务和接口。
比方说,可以创建描述某台服务器上提供的服务的 WSDL 文件,然后把该文件分发给需要这些服务的 Web 服务消费者。通过阅读和解析 WSDL 文件,消费者能够了解到使用这些 Web 服务需要知道的所有信息,包括可以交换的数据类型、参数以及返回的各种错误和其他信息。
再次使用来自 W3C 的例子,可以看到不同远程函数的声明和交换的数据都是通过结构的 XML 定义处理的,如清单 3 所示。
清单 3. 不同远程函数和交换数据的 XML 定义

 <?xml version="1.0"?><!-- root element wsdl:definitions defines set of related services --><wsdl:definitions name="EndorsementSearch"  targetNamespace="http://namespaces.snowboard-info.com"  xmlns:es="http://www.snowboard-info.com/EndorsementSearch.wsdl"  xmlns:esxsd="http://schemas.snowboard-info.com/EndorsementSearch.xsd"  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">  <!-- wsdl:types encapsulates schema definitions of communication types;                                                        here using xsd -->  <wsdl:types>    <!-- all type declarations are in a chunk of xsd -->    <xsd:schema targetNamespace="http://namespaces.snowboard-info.com"      xmlns:xsd="http://www.w3.org/1999/XMLSchema">      <!-- xsd definition: GetEndorsingBoarder [manufacturer string,                                                         model string] -->      <xsd:element name="GetEndorsingBoarder">  <xsd:complexType>    <xsd:sequence>      <xsd:element name="manufacturer" type="string"/>            <xsd:element name="model" type="string"/>    </xsd:sequence>  </xsd:complexType>      </xsd:element>      <!-- xsd definition: GetEndorsingBoarderResponse [... endorsingBoarder string ...] -->      <xsd:element name="GetEndorsingBoarderResponse">  <xsd:complexType>    <xsd:all>      <xsd:element name="endorsingBoarder" type="string"/>    </xsd:all>  </xsd:complexType>      </xsd:element>      <!-- xsd definition: GetEndorsingBoarderFault [... errorMessage string ...] -->      <xsd:element name="GetEndorsingBoarderFault">  <xsd:complexType>    <xsd:all>      <xsd:element name="errorMessage" type="string"/>    </xsd:all>  </xsd:complexType>      </xsd:element>    </xsd:schema>  </wsdl:types>  <!-- wsdl:message elements describe potential transactions -->  <!-- request GetEndorsingBoarderRequest is of type GetEndorsingBoarder -->  <wsdl:message name="GetEndorsingBoarderRequest">    <wsdl:part name="body" element="esxsd:GetEndorsingBoarder"/>  </wsdl:message>  <!-- response GetEndorsingBoarderResponse is of type                                        GetEndorsingBoarderResponse -->  <wsdl:message name="GetEndorsingBoarderResponse">    <wsdl:part name="body" element="esxsd:GetEndorsingBoarderResponse"/>  </wsdl:message>  <!-- wsdl:portType describes messages in an operation -->  <wsdl:portType name="GetEndorsingBoarderPortType">    <!-- the value of wsdl:operation eludes me -->    <wsdl:operation name="GetEndorsingBoarder">      <wsdl:input message="es:GetEndorsingBoarderRequest"/>      <wsdl:output message="es:GetEndorsingBoarderResponse"/>      <wsdl:fault message="es:GetEndorsingBoarderFault"/>    </wsdl:operation>  </wsdl:portType>  <!-- wsdl:binding states a serialization protocol for this service -->  <wsdl:binding name="EndorsementSearchSoapBinding"                type="es:GetEndorsingBoarderPortType">    <!-- leverage off soap:binding document style ...(no wsdl:foo pointing at the soap binding) -->    <soap:binding style="document"                  transport="http://schemas.xmlsoap.org/soap/http"/>    <!-- semi-opaque container of network transport details classed by soap:binding above ... -->    <wsdl:operation name="GetEndorsingBoarder">      <!-- again bind to SOAP? ... -->      <soap:operation soapAction="http://www.snowboard-info.com/EndorsementSearch"/>      <!-- further specify that the messages in the wsdl:operation "GetEndorsingBoarder" use SOAP? ... -->      <wsdl:input>        <soap:body use="literal"       namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>      </wsdl:input>      <wsdl:output>        <soap:body use="literal"       namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>      </wsdl:output>      <wsdl:fault>        <soap:body use="literal"       namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>      </wsdl:fault>    </wsdl:operation>  </wsdl:binding>  <!-- wsdl:service names a new service "EndorsementSearchService" -->  <wsdl:service name="EndorsementSearchService">    <wsdl:documentation>snowboarding-info.com Endorsement Service</wsdl:documentation>     <!-- connect it to the binding "EndorsementSearchSoapBinding" above -->    <wsdl:port name="GetEndorsingBoarderPort"               binding="es:EndorsementSearchSoapBinding">      <!-- give the binding an network address -->      <soap:address location="http://www.snowboard-info.com/EndorsementSearch"/>    </wsdl:port>  </wsdl:service> </wsdl:definitions>

WSDL 声明了消息类型、默认数据类型和内容以及交换的数据结构。
访问服务器上 SOAP 结构需要使用的一切信息都可以在这个 WSDL 中找到。大多数语言和环境都提供一种阅读和解析 WSDL 的机制,以确定可用的函数和数据交换。
WSDL 不仅定义了用于交换信息的 SOAP 接口,通过适当的 WSDL 生成程序,还可用于创建发送请求、生成并格式化响应所需要的代码。
WSDL 和 SOAP 组成了一个强大的远程过程调用系统。

更多相关文章

  1. Parse XML Tree 解析XML文件的代码实例
  2. XML解析器-在js中解析xml文件
  3. XML文件解析汇总SAX/DOM/PULL的详细介绍
  4. 了解xml的几种文件格式
  5. 使用PULL解析XML文件时循环过程的示例代码分享
  6. 详细介绍Android 解析XML文件和生成XML文件的示例代码
  7. XML文件数减少的示例代码分享
  8. 具体介绍使用XmlReader读取xml文件的代码案例
  9. xml,文件操作功能类的示例代码详解

随机推荐

  1. 理解 Android(安卓)上的安全性
  2. 美化你的listView
  3. [转]Android异步处理系列文章索引
  4. NDK简单实例
  5. android 定制个性按钮 控件
  6. Head First Android(安卓)Development-笔
  7. Android(安卓)SVG图片解析Demo
  8. Android实现在列表List中显示半透明小窗
  9. [Android] Android使用序列化接口Parcela
  10. Android生成Market分享链接