ASP.NET創建XML Web服務全接觸(2)
發表時間:2024-02-13 來源:明輝站整理相關軟件相關文章人氣:
[摘要]為了在網絡多樣性方面取得成功,XML Web服務必須不關心所選擇的操作系統、對象模型和程序語言。而且,XML Web服務為了和其他基于Web的技術一樣被廣泛接受,它們必須: 松散耦聯:如果兩個系統中,只有使用的命令能理解前面提到過的自我描述基于文本的消息,那么這兩個系統就被認為是松散耦聯的。而另...
為了在網絡多樣性方面取得成功,XML Web服務必須不關心所選擇的操作系統、對象模型和程序語言。而且,XML Web服務為了和其他基于Web的技術一樣被廣泛接受,它們必須:
松散耦聯:如果兩個系統中,只有使用的命令能理解前面提到過的自我描述基于文本的消息,那么這兩個系統就被認為是松散耦聯的。而另一方面,緊密耦聯的系統使用大量的定制的軟件來增強系統間的通訊,并且需要對系統之間了解的更多。
無所不在的通信:現在個人不太可能能夠構造一個操作系統,或者在近期內也不會整合接入因特網的能力,所以這就要求提供一個無所不在的通信渠道。同樣,把幾乎任何系統和設備連接到因特網的能力將確保這樣的系統和設備能夠被連接到因特網的其他的系統或設備使用。
通用的數據格式:通過采用現有的開放標準而不是專用的閉環式通信方法,任何系統都能支持能夠理解XML Web服務的相同的開放標準。使用自我描述的基于文本的消息,XML Web服務和它們的客戶可以共享這些消息,而不必知道每個底層系統的組成,這將能夠在獨立的完全不同的系統之間通信。XML Web服務使用XML來實現這個功能。
XML Web服務使用一個提供下列功能的基礎結構:一個發現機制,用于定位XML Web服務;一個服務描述,用于定義如何使用這些服務;以及用來通信的標準連接格式。下列插圖顯示了這個基礎結構的一個實例。

基礎結構塊 | 職能 |
XML Web服務目錄 | XML Web服務目錄提供一個中央地址,用于定位其他組織提供的XML Web服務。象UDDI登記這樣的XML Web服務目錄實現這個職能。XML Web服務的客戶端可以引用XML Web服務目錄,也可以不引用XML Web服務目錄。 |
XML Web 服務發現 | XML Web服務發現是使用Web服務描述語言(WSDL)定位或發現一個或多個描述特別的XML Web服務的相關文檔。DISCO規格定義了定位服務描述的規則。如果XML Web服務客戶了解服務描述的位置,他們可以繞過發現步驟。 |
XML Web服務描述 | 為了了解如何與一個特定的XML Web服務交互作用,需要提供一個描述來定義XML Web服務支持的交互操作。XML Web服務客戶端在可以使用一個XML Web服務之間必須了解如何與它交互。 |
XML Web服務連接格式 | 為了能夠進行通用通信,XML Web服務使用開放連接格式來進行通信,這些是任何支持最普通的Web標準的系統都能夠理解的協議。SOAP是用于進行XML Web服務通信的關鍵協議。 |
XML Web服務目錄
和使用因特網上任何其他的資源一樣,XML Web服務目錄如果沒有某些查找方法的話,它是不可能夠找到一個特定的XML Web服務的。XML Web服務目錄提供了中央地址,可以讓XML Web服務供應者在其上發布他們提供的XML Web服務的信息。這樣的目錄甚至可以是XML Web服務本身,可以編程訪問并且提供搜索結果來響應XML Web服務客戶端的查詢。使用一個XML Web服務目錄來定位一個提供XML Web服務作為特定目的的組織,或者判斷一個特定組織提供了什么XML Web服務,這可能是非常必要的。
UDDI(統一描述發現和集成規范)規格定義了一個標準方法來發布和發現XML Web服務的信息。與UDDI關聯的XML模式定義了四個信息類型,能讓開發者使用一個發布的XML Web服務。這些是:商業信息、服務信息、綁定信息和其他用于服務的規范的信息。
作為UDDI工程的核心組件,UDDI Business Registry(業務登記)允許業務編程定位其他組織發布的XML Web服務的信息。開發者可以使用UDDI Business Registry來定位發現文件和服務描述。更多信息,請看UDDI Web站點(http://uddi.microsoft.com)。
XML Web服務發現
XML Web服務發現是使用Web服務描述語言WSDL定位或發現一個或多個描述特定的XML Web服務的文件的操作。它讓XML Web服務客戶端得知一個XML Web服務是否存在并且到哪里找到這個XML Web服務的描述文件。
一個發布的.disco文件,是包含連接到其他描述XML Web服務的資源的XML文件,能夠編程發現一個XML Web服務。下面的代碼給出了一個發現文件的結構的例子:
<?xml version="1.0" encoding="utf-8" ?> <discovery xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.xmlsoap.org/disco/"> <contractRef ref="http://www.contoso.com/Counter.asmx?wsdl" docRef="http://www.contoso.com/Counter.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" /> <soap address="http://www.contoso.com/Counter.asmx" xmlns:q1="http://tempuri.org/" binding="q1:CounterSoap" xmlns="http://schemas.xmlsoap.org/disco/soap/" /> </discovery> |
注意:發現文檔是一個元素容器,一般包含到提供用于XML Web服務的發現信息的資源的鏈接。如果關聯的是URL,它們假定關聯到發現文檔的位置。
然而,一個實現XML Web服務的Web站點不必支持發現。另一個站點可以負責描述這個服務,例如一個XML Web服務目錄。沒有一種公共的方法用來發現服務,例如當你創建一個私人使用的服務時。