Web Service描述語言 WSDL 詳解(2)--WSDL檔案樣本[轉]

來源:互聯網
上載者:User
web|樣本|詳解   讓我們來研究一下WSDL檔案,看看它的結構,以及如何工作。請注意這是一個非常簡單的WSDL文檔執行個體。我們的意圖只是說明它最顯著的特徵。以下的內容中包括更加詳細的討論。

<?xml version="1.0" encoding="UTF-8" ?>
<definitions name="FooSample"
 targetNamespace="http://tempuri.org/wsdl/"
 xmlns:wsdlns="http://tempuri.org/wsdl/"
 xmlns:typens="http://tempuri.org/xsd"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:stk="http://schemas.microsoft.com/soap-toolkit/wsdl-extension"
 xmlns="http://schemas.xmlsoap.org/wsdl/">

<types>
<schema targetNamespace="http://tempuri.org/xsd"
  xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  elementFormDefault="qualified" >
</schema>
</types>

<message name="Simple.foo">
 <part name="arg" type="xsd:int"/>
</message>

<message name="Simple.fooResponse">
 <part name="result" type="xsd:int"/>
</message>

<portType name="SimplePortType">
 <operation name="foo" parameterOrder="arg" >
  <input message="wsdlns:Simple.foo"/>
  <output message="wsdlns:Simple.fooResponse"/>
 </operation>
</portType>

<binding name="SimpleBinding" type="wsdlns:SimplePortType">
 <stk:binding preferredEncoding="UTF-8" />
 <soap:binding style="rpc"
  transport="http://schemas.xmlsoap.org/soap/http"/>
 <operation name="foo">
  <soap:operation soapAction="http://tempuri.org/action/Simple.foo"/>
  <input>
   <soap:body use="encoded" namespace="http://tempuri.org/message/"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
  </input>
  <output>
   <soap:body use="encoded" namespace="http://tempuri.org/message/"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
  </output>
 </operation>
</binding>

<service name="FOOSAMPLEService">
 <port name="SimplePort" binding="wsdlns:SimpleBinding">
  <soap:address location="http://carlos:8080/FooSample/FooSample.asp"/>
 </port>
</service>
</definitions>
  以下是該執行個體文檔的總述:稍後我將詳細討論每一部分的細節。

  第一行申明該文檔是XML。儘管這並不是必需的,但它有助於XML解析器決定是否解析WSDL檔案或只是報錯。第二行是WSDL文檔的根項目:<definitions>。一些屬性附屬於根項目,就像<schema>子項目對於<types>元素。

  <types>元素包含了Types欄。如果沒有需要聲明的資料類型,這欄可以預設。在WSDL範例中,沒有應用程式特定的types聲明,但我仍然使用了Types欄,只是為了聲明schema namespaces。

  <message>元素包含了Messages欄。如果我們把操作看作函數,<message>元素定義了那個函數的參數。<message>元素中的每個<part>子項目都和某個參數相符。輸入參數在<message>元素中定義,與輸出參數相隔離--輸出參數有自己的<message>元素。兼作輸入、輸出的參數在輸入輸出的<message>元素中有它們相應的<part>元素。輸出<message>元素以"Response"結尾,就像以前所用的"fooResponse"。每個<part>元素都有名字和類型屬性,就像函數的參數有參數名和參數類型。

  用於交換文檔時,WSDL允許使用<message>元素來描述交換的文檔。

  <part>元素的類型可以是XSD基底類型,也可以是SOAP定義類型(soapenc)、WSDL定義類型(wsdl)或是Types欄定義的類型。

  一個PortTypes欄中,可以有零個、單個或多個<portType>元素。由於抽象PortType定義可以放置在分開的檔案中,在某個WSDL檔案中沒有<portType>元素是可能的。上面的例子裡只是用了一個<portType>元素。而一個<portType>元素可在<operation>元素中定義一個或是多個操作。樣本僅使用了一個名為"foo"的<operation>元素。這和某個函數名相同。<operation>元素可以有一個、兩個、三個子項目:<input>, <output> 和<fault>元素。每個<input>和<output>元素中的訊息都引用Message欄中的相關的<message>元素。這樣,樣本中的整個<portType>元素就和以下的C函數等效:

   int foo(int arg);
  這個例子足見XML和C相比要冗長的多。(包括<message>元素,XML在樣本中共使用了12行代碼來表達相同的單行函式宣告。)

  Bindings欄可以有零個、一個或者多個<binding>元素。它的意圖是制定每個<operation>通過網路調用和回應。Services欄同樣可以有零個、一個、多個<service>元素。它還包含了<port>元素,每個<port>元素引用一個Bindings欄裡的<binding>元素。Bindings和Services欄都包含WSDL文檔。

原文地址:http://www.yesky.com/20011013/200759_1.shtml

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。