Web Service描述語言 WSDL 詳解(1)--為什麼使用WSDL?[轉]

來源:互聯網
上載者:User
web|詳解   像Internet協議之類的標準有沒有為權威所利用,或者人們這樣看待它是因為順之所獲的好處遠遠超出了代價?曾經有許多試圖建立的標準都流產了。有時候,那些還沒有普遍使用的標準甚至由法令或政府規定強行推出:Ada語言就是一例。

  我相信正是跟隨標準所帶來的好處使它廣泛接受。例如,對於鐵路服務來說,真正重要的是,不同公司所鋪設的鐵路結合到一起,或者是來自好幾個公司的產品協調的工作在一起。幾家大的企業合力建立了SOAP標準。Web Service描述語言(WSDL)向這種Web Service的供應商和使用者推出了方便的協調工作的方法,使我們能更容易的獲得SOAP的種種好處。幾家公司的鐵道並在一起不算什麼難事,他們所需遵循的只是兩軌間的標準距離。對Web Service來說,這要複雜得多。我們必須先制定出指定介面的標準格式。

  曾經有人說SOAP並不真需要什麼介面描述語言。如果SOAP是交流純內容的標準,那就需要一種語言來描述內容。SOAP訊息確實帶有某些類型資訊,因此SOAP允許動態決定類型。但不知道一個函數的函數名、參數的個數和各自類型,怎麼可能去調用這個函數呢?沒有WSDL,我可以從必備文檔中確定調用文法,或者檢查訊息。隨便何種方法,都必須有人蔘與,這個過程可能會有錯。而使用了WSDL,我就可以通過這種跨平台和跨語言的方法使Web Service代理的產生自動化。就像COM和CORBA的IDL檔案,WSDL檔案由客戶和伺服器約定。

  注意由於WSDL設計成可以綁定除SOAP以外的其他協議,這裡我們主要關注WSDL在HTTP上和SOAP的關係。同樣,由於SOAP目前主要用來調用遠端過程和函數,WSDL支援SOAP傳輸的文檔規範。WSDL 1.1已經作為記錄遞交給W3C(見http://www.w3.org/TR/wsdl.html)

   WSDL文檔結構

  若要理解XML文檔,將之看作塊狀圖表非常有用。下圖以XML的文檔形式說明了WSDL的結構,它揭示了WSDL文檔五個欄之間的關係。

  WSDL文檔可以分為兩部分。頂部分由抽象定義組成,而底部分則由具體描述組成。抽象部分以獨立於平台和語言的方式定義SOAP訊息,它們並不包含任何隨機器或語言而變的元素。這就定義了一系列服務,截然不同的網站都可以實現。隨網站而異的東西如序列化便歸入底部分,因為它包含具體的定義。

   l 抽象定義

    Types

    獨立與機器和語言的類型定義

    Messages

    包括函數參數(輸入與輸出分開)或文檔描述

    PortTypes

    引用訊息部分中訊息定義來描述函數簽名(操作名、輸入參數、輸出參數)

   2 具體定義

    Bindings

    PortTypes部分的每一操作在此綁定實現

    Services

    確定每一綁定的連接埠地址

  下面的圖中,箭頭串連符代表文檔不同欄之間的關係。點和箭頭代表了引用或使用關係。雙箭頭代表"修改"關係。3-D的箭頭代表了內含項目關聯性。這樣,各Messages欄使用Types欄的定義,PortTypes欄使用Messages欄的定義;Bindings欄引用了PortTypes欄,Services欄引用Bindings欄,PortTypes和Bindings欄包含了operation元素,而Services欄包含了port元素。PortTypes欄裡的operation元素由Bindings欄裡的operation元素進一步修改或描述。

  在此背景中,我將使用標準的XML術語來描述WSDL文檔。Element是指XML的元素,而"attribute"指元素的屬性。於是:

<element attribute="attribute-value">contents</element>
  內容也可能由一個或多個元素以遞迴的方式組成。根項目是所有元素之中最進階的元素。子項目總是從屬於另一個元素,父元素。

  注意,文檔之中可能只有一個Types欄,或根本沒有。所有其他的欄可以只有零元素、單元素或是多元素。WSDL的列表要求所有的欄以固定的順序出現:import, types, message, portType, binding, service。所有的抽象可以是單獨存在於別的檔案中,也可以從主文件中匯入。



       圖一:抽象定義和具體定義

原文地址:http://www.yesky.com/20011013/200759.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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。