XML+XSD,SOAP和WSDL就是構(gòu)成WebService平臺的三大技術(shù)。 XML+XSD: WebService采用HTTP協(xié)議傳輸數(shù)據(jù),采用XML格式封裝數(shù)據(jù)(即XML中說明調(diào)用遠程服務(wù)對象的哪個方法,傳遞的參數(shù)是什么, 以及服務(wù)對象的 返回結(jié)果是什么)。 XML是WebService平臺中表示數(shù)據(jù)的格式。除了易于建立和易于分析外,XML主要的優(yōu)點在于它既是平臺無關(guān)的,又是廠商無關(guān) 的。 無關(guān)性是比技術(shù)優(yōu)越性更重要的:軟件廠商是不會選擇一個由競爭對手所發(fā)明的技術(shù)的。
XML解決了數(shù)據(jù)表示的問題,但它沒有定義一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,更沒有說怎么去擴展這套數(shù)據(jù)類型。 例如,整形數(shù)到底代表什么?16位,32位,64位?這 些細節(jié)對實現(xiàn)互操作性很重要。 XML Schema(XSD)就是專門解決這個問題的一套標(biāo)準(zhǔn)。它定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,并給出了一種語言來擴展這套數(shù)據(jù)類型。 WebService平臺就 是用XSD來作為其數(shù)據(jù)類型系統(tǒng)的。當(dāng)你用某種語言(如VB.NET或C#)來構(gòu)造一個Web service時,為了符合WebService標(biāo)準(zhǔn), 所 有你使用的數(shù)據(jù)類型都必須被轉(zhuǎn)換為XSD類型。 你用的工具可能已經(jīng)自動幫你完成了這個轉(zhuǎn)換,但你很可能會根據(jù)你的需要修改一下轉(zhuǎn)換過程。 SOAP: WebService通過HTTP協(xié)議發(fā)送請求和接收結(jié)果時,發(fā)送的請求內(nèi)容和結(jié)果內(nèi)容都采用XML格式封裝, 并增加了一些特定的HTTP消息頭,以說明 HTTP消息的內(nèi)容格式,這些特定的HTTP消息頭和XML內(nèi)容格式就是SOAP協(xié)議。 SOAP提供了標(biāo)準(zhǔn)的RPC方法來調(diào)用Web Service。 SOAP協(xié)議 = HTTP協(xié)議 + XML數(shù)據(jù)格式 SOAP協(xié)議定義了SOAP消息的格式,SOAP協(xié)議是基于HTTP協(xié)議的,SOAP也是基于XML和XSD的,XML是SOAP的數(shù)據(jù)編碼方式。 打個比 喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護欄,SOAP就是普通公路經(jīng)過加隔離帶和防護欄改造過的高速公路。 WSDL: 好比我們?nèi)ド痰曩I東西,首先要知道商店里有什么東西可買,然后再來購買,商家的做法就是張貼廣告海報。 WebService也一樣,WebService客戶端要調(diào)用一個WebService服務(wù),首先要有知道這個服務(wù)的地址在哪,以及這個服務(wù)里有什么方 法可以調(diào)用, 所以,WebService務(wù)器端首先要通過一個WSDL文件來說明自己家里有啥服務(wù)可以對外調(diào)用, 服務(wù)是什么(服務(wù)中有哪些方法,方法接受 的參數(shù)是什么,返回值是什么),服務(wù)的網(wǎng)絡(luò)地址用哪個url地址表示,服務(wù)通過什么方式來調(diào)用。
WSDL(Web Services Description Language)就是這樣一個基于XML的語言,用于描述Web Service及其函數(shù)、參數(shù)和返回值。 它是WebService客戶端和服務(wù)器端都 能理解的標(biāo)準(zhǔn)格式。因為是基于XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。
WSDL 文件保存在Web服務(wù)器上,通過一個url地址就可以訪問到它。 客戶端要調(diào)用一個WebService服務(wù)之前,要知道該服務(wù)的WSDL文件的地址。 WebService服務(wù)提供商可以通過兩種方式來暴露它的WSDL文件地址:1.注冊到UDDI服務(wù)器,以便被人查找;2.直接告訴給客戶端調(diào)用者。
|