下一节:

  XML WSDL

  • 定义和使用

    WSDL 代表 Web 服务描述语言
    WSDL 用于描述 Web 服务
    WSDL 用 XML 编写
    从2007年6月26日开始,WSDL 是 W3C 的建议。
    WSDL 文档描述了 Web 服务。 它使用以下主要元素指定服务的位置以及服务的方法:
    元素 描述
    <types> 定义Web服务使用的(XML Schema)数据类型
    <message> 定义每个操作的数据元素
    <portType> 描述可以执行的操作以及所涉及的消息。
    <binding> 定义每种端口类型的协议和数据格式
    WSDL文档的主要结构如下所示:
    <definitions>
    
    <types>
       数据类型定义........
    </types>
    
    <message>
      通讯数据的定义。...
    </message>
    
    <portType>
       操作集...
    </portType>
    
    <binding>
        协议和数据格式规范。
    </binding>
    
    </definitions>
    
    这是WSDL文档的简化部分:
    <message name="getTermRequest">
      <part name="term" type="xs:string"/>
    </message>
    
    <message name="getTermResponse">
      <part name="value" type="xs:string"/>
    </message>
    
    <portType name="glossaryTerms">
      <operation name="getTerm">
        <input message="getTermRequest"/>
        <output message="getTermResponse"/>
      </operation>
    </portType>
    
    在此示例中,<portType>元素将 "glossaryTerms" 定义为端口的名称,将 "getTerm" 定义为操作的名称。
    "getTerm" 操作具有一个名为 "getTermRequest" 的输入消息和一个名为 "getTermResponse" 的输出消息。
    <message>元素定义每个消息的部分以及相关的数据类型。
  • <portType>元素

    <portType> 元素定义 Web 服务,可以执行的操作以及所涉及的消息。
    请求-响应类型是最常见的操作类型,但是 WSDL 定义了四种类型:
    类型 描述
    One-way 该操作可以接收消息,但不会返回响应
    Request-response 该操作可以接收请求,并返回响应
    Solicit-response 该操作可以发送请求,并将等待响应
    Notification 该操作可以发送消息,但不会等待响应
  • WSDL 单向操作

    单向操作示例:
    <message name="newTermValues">
      <part name="term" type="xs:string"/>
      <part name="value" type="xs:string"/>
    </message>
    
    <portType name="glossaryTerms">
      <operation name="setTerm">
        <input name="newTerm" message="newTermValues"/>
      </operation>
    </portType>
    
    在上面的示例中,portType "glossaryTerms" 定义了一种称为 "setTerm" 的单向操作。
    "setTerm" 操作允许使用带有输入参数 "term" 和 "value" 的 "newTermValues" 消息输入新的词汇表术语消息。 但是,没有为该操作定义输出。
  • WSDL请求-响应操作

    请求-响应操作示例:
    <message name="getTermRequest">
      <part name="term" type="xs:string"/>
    </message>
    
    <message name="getTermResponse">
      <part name="value" type="xs:string"/>
    </message>
    
    <portType name="glossaryTerms">
      <operation name="getTerm">
        <input message="getTermRequest"/>
        <output message="getTermResponse"/>
      </operation>
    </portType>
    
    在上面的示例中,portType "glossaryTerms" 定义了一个名为 "getTerm" 的请求-响应操作。
    "getTerm” 操作需要带有参数 "term" 的输入消息 "getTermRequest",并返回带有参数 "value" 的输出消息 "getTermResponse"。
  • WSDL绑定到SOAP

    WSDL 绑定定义 Web 服务的消息格式和协议详细信息。
    请求-响应操作示例:
    <message name="getTermRequest">
      <part name="term" type="xs:string"/>
    </message>
    
    <message name="getTermResponse">
      <part name="value" type="xs:string"/>
    </message>
    
    <portType name="glossaryTerms">
      <operation name="getTerm">
        <input message="getTermRequest"/>
        <output message="getTermResponse"/>
      </operation>
    </portType>
    
    <binding type="glossaryTerms" name="b1">
       <soap:binding style="document"
       transport="http://schemas.xmlsoap.org/soap/http" />
       <operation>
         <soap:operation soapAction="http://example.com/getTerm"/>
         <input><soap:body use="literal"/></input>
         <output><soap:body use="literal"/></output>
      </operation>
    </binding>
    
    binding(绑定)元素具有两个属性-名称和类型。
    name 属性(可以使用任意名称)定义绑定的名称,type 属性指向绑定的端口,在本例中为 "glossaryTerms" 端口。
    soap:binding 元素具有两个属性-样式和传输。
    样式属性可以是 "rpc" 或 "document"。 在这种情况下,我们使用文档。 transport 属性定义要使用的SOAP协议。 在这种情况下,我们使用 HTTP。
    operation 元素定义 portType 公开的每个操作。
    对于每个操作,必须定义相应的 SOAP 操作。 您还必须指定输入和输出的编码方式。 在这种情况下,我们使用“文字”。
下一节: