明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP.NET創(chuàng)建XML Web服務(wù)全接觸(2)

[摘要]為了在網(wǎng)絡(luò)多樣性方面取得成功,XML Web服務(wù)必須不關(guān)心所選擇的操作系統(tǒng)、對(duì)象模型和程序語(yǔ)言。而且,XML Web服務(wù)為了和其他基于Web的技術(shù)一樣被廣泛接受,它們必須:  松散耦聯(lián):如果兩個(gè)系統(tǒng)中,只有使用的命令能理解前面提到過的自我描述基于文本的消息,那么這兩個(gè)系統(tǒng)就被認(rèn)為是松散耦聯(lián)的。而另...

    

  為了在網(wǎng)絡(luò)多樣性方面取得成功,XML Web服務(wù)必須不關(guān)心所選擇的操作系統(tǒng)、對(duì)象模型和程序語(yǔ)言。而且,XML Web服務(wù)為了和其他基于Web的技術(shù)一樣被廣泛接受,它們必須:

  松散耦聯(lián):如果兩個(gè)系統(tǒng)中,只有使用的命令能理解前面提到過的自我描述基于文本的消息,那么這兩個(gè)系統(tǒng)就被認(rèn)為是松散耦聯(lián)的。而另一方面,緊密耦聯(lián)的系統(tǒng)使用大量的定制的軟件來增強(qiáng)系統(tǒng)間的通訊,并且需要對(duì)系統(tǒng)之間了解的更多。

  無所不在的通信:現(xiàn)在個(gè)人不太可能能夠構(gòu)造一個(gè)操作系統(tǒng),或者在近期內(nèi)也不會(huì)整合接入因特網(wǎng)的能力,所以這就要求提供一個(gè)無所不在的通信渠道。同樣,把幾乎任何系統(tǒng)和設(shè)備連接到因特網(wǎng)的能力將確保這樣的系統(tǒng)和設(shè)備能夠被連接到因特網(wǎng)的其他的系統(tǒng)或設(shè)備使用。

  通用的數(shù)據(jù)格式:通過采用現(xiàn)有的開放標(biāo)準(zhǔn)而不是專用的閉環(huán)式通信方法,任何系統(tǒng)都能支持能夠理解XML Web服務(wù)的相同的開放標(biāo)準(zhǔn)。使用自我描述的基于文本的消息,XML Web服務(wù)和它們的客戶可以共享這些消息,而不必知道每個(gè)底層系統(tǒng)的組成,這將能夠在獨(dú)立的完全不同的系統(tǒng)之間通信。XML Web服務(wù)使用XML來實(shí)現(xiàn)這個(gè)功能。

  XML Web服務(wù)使用一個(gè)提供下列功能的基礎(chǔ)結(jié)構(gòu):一個(gè)發(fā)現(xiàn)機(jī)制,用于定位XML Web服務(wù);一個(gè)服務(wù)描述,用于定義如何使用這些服務(wù);以及用來通信的標(biāo)準(zhǔn)連接格式。下列插圖顯示了這個(gè)基礎(chǔ)結(jié)構(gòu)的一個(gè)實(shí)例。

基礎(chǔ)結(jié)構(gòu)塊
職能
XML Web服務(wù)目錄XML Web服務(wù)目錄提供一個(gè)中央地址,用于定位其他組織提供的XML Web服務(wù)。象UDDI登記這樣的XML Web服務(wù)目錄實(shí)現(xiàn)這個(gè)職能。XML Web服務(wù)的客戶端可以引用XML Web服務(wù)目錄,也可以不引用XML Web服務(wù)目錄。
XML Web 服務(wù)發(fā)現(xiàn)XML Web服務(wù)發(fā)現(xiàn)是使用Web服務(wù)描述語(yǔ)言(WSDL)定位或發(fā)現(xiàn)一個(gè)或多個(gè)描述特別的XML Web服務(wù)的相關(guān)文檔。DISCO規(guī)格定義了定位服務(wù)描述的規(guī)則。如果XML Web服務(wù)客戶了解服務(wù)描述的位置,他們可以繞過發(fā)現(xiàn)步驟。
XML Web服務(wù)描述為了了解如何與一個(gè)特定的XML Web服務(wù)交互作用,需要提供一個(gè)描述來定義XML Web服務(wù)支持的交互操作。XML Web服務(wù)客戶端在可以使用一個(gè)XML Web服務(wù)之間必須了解如何與它交互。
XML Web服務(wù)連接格式為了能夠進(jìn)行通用通信,XML Web服務(wù)使用開放連接格式來進(jìn)行通信,這些是任何支持最普通的Web標(biāo)準(zhǔn)的系統(tǒng)都能夠理解的協(xié)議。SOAP是用于進(jìn)行XML Web服務(wù)通信的關(guān)鍵協(xié)議。


  XML Web服務(wù)目錄

  和使用因特網(wǎng)上任何其他的資源一樣,XML Web服務(wù)目錄如果沒有某些查找方法的話,它是不可能夠找到一個(gè)特定的XML Web服務(wù)的。XML Web服務(wù)目錄提供了中央地址,可以讓XML Web服務(wù)供應(yīng)者在其上發(fā)布他們提供的XML Web服務(wù)的信息。這樣的目錄甚至可以是XML Web服務(wù)本身,可以編程訪問并且提供搜索結(jié)果來響應(yīng)XML Web服務(wù)客戶端的查詢。使用一個(gè)XML Web服務(wù)目錄來定位一個(gè)提供XML Web服務(wù)作為特定目的的組織,或者判斷一個(gè)特定組織提供了什么XML Web服務(wù),這可能是非常必要的。

  UDDI(統(tǒng)一描述發(fā)現(xiàn)和集成規(guī)范)規(guī)格定義了一個(gè)標(biāo)準(zhǔn)方法來發(fā)布和發(fā)現(xiàn)XML Web服務(wù)的信息。與UDDI關(guān)聯(lián)的XML模式定義了四個(gè)信息類型,能讓開發(fā)者使用一個(gè)發(fā)布的XML Web服務(wù)。這些是:商業(yè)信息、服務(wù)信息、綁定信息和其他用于服務(wù)的規(guī)范的信息。

  作為UDDI工程的核心組件,UDDI Business Registry(業(yè)務(wù)登記)允許業(yè)務(wù)編程定位其他組織發(fā)布的XML Web服務(wù)的信息。開發(fā)者可以使用UDDI Business Registry來定位發(fā)現(xiàn)文件和服務(wù)描述。更多信息,請(qǐng)看UDDI Web站點(diǎn)(http://uddi.microsoft.com)。

  XML Web服務(wù)發(fā)現(xiàn)

  XML Web服務(wù)發(fā)現(xiàn)是使用Web服務(wù)描述語(yǔ)言WSDL定位或發(fā)現(xiàn)一個(gè)或多個(gè)描述特定的XML Web服務(wù)的文件的操作。它讓XML Web服務(wù)客戶端得知一個(gè)XML Web服務(wù)是否存在并且到哪里找到這個(gè)XML Web服務(wù)的描述文件。

  一個(gè)發(fā)布的.disco文件,是包含連接到其他描述XML Web服務(wù)的資源的XML文件,能夠編程發(fā)現(xiàn)一個(gè)XML Web服務(wù)。下面的代碼給出了一個(gè)發(fā)現(xiàn)文件的結(jié)構(gòu)的例子:

<?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>


  注意:發(fā)現(xiàn)文檔是一個(gè)元素容器,一般包含到提供用于XML Web服務(wù)的發(fā)現(xiàn)信息的資源的鏈接。如果關(guān)聯(lián)的是URL,它們假定關(guān)聯(lián)到發(fā)現(xiàn)文檔的位置。

  然而,一個(gè)實(shí)現(xiàn)XML Web服務(wù)的Web站點(diǎn)不必支持發(fā)現(xiàn)。另一個(gè)站點(diǎn)可以負(fù)責(zé)描述這個(gè)服務(wù),例如一個(gè)XML Web服務(wù)目錄。沒有一種公共的方法用來發(fā)現(xiàn)服務(wù),例如當(dāng)你創(chuàng)建一個(gè)私人使用的服務(wù)時(shí)。