什么是WebService??
對(duì)這個(gè)問(wèn)題,我們至少有兩種答案。從表面上看,Web service 就是一個(gè)應(yīng)用程序,它向外界暴露出一個(gè)能夠通過(guò)Web進(jìn)行調(diào)用的API。這就是說(shuō),你能夠用編程的方法通過(guò)Web來(lái)調(diào)用這個(gè)應(yīng)用程序。我們把調(diào)用這個(gè)Web service 的應(yīng)用程序叫做客戶。例如,你想創(chuàng)建一個(gè)Web service ,它的作用是返回當(dāng)前的天氣情況。那么你可已建立一個(gè)ASP頁(yè)面,它接受郵政編碼作為查詢字符串,然后返回一個(gè)由逗號(hào)隔開(kāi)的字符串,包含了當(dāng)前的氣溫和天氣。要調(diào)用這個(gè)ASP頁(yè)面,客戶端需要發(fā)送下面的這個(gè)HTTP GET請(qǐng)求:
http://host.company.com/weather.asp?zipcode=20171
返回的數(shù)據(jù)就應(yīng)該是這樣:
21,晴
這個(gè)ASP頁(yè)面就應(yīng)該可以算作是Web service 了。因?yàn)樗贖TTP GET請(qǐng)求,暴露出了一個(gè)可以通過(guò)Web調(diào)用的API。當(dāng)然,Web service 還有更多的東西。
下面是對(duì)Web service 更精確的解釋: Web services是建立可互操作的分布式應(yīng)用程序的新平臺(tái)。作為一個(gè)Windows程序員,你可能已經(jīng)用COM或DCOM建立過(guò)基于組件的分布式應(yīng)用程序。COM是一個(gè)非常好的組件技術(shù),但是我們也很容易舉出COM并不能滿足要求的情況。
Web service平臺(tái)是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性。你可以用任何你喜歡的語(yǔ)言,在任何你喜歡的平臺(tái)上寫(xiě)Web service ,只要我們可以通過(guò)Web service標(biāo)準(zhǔn)對(duì)這些服務(wù)進(jìn)行查詢和訪問(wèn)。
新平臺(tái)
Web service平臺(tái)需要一套協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)建。任何平臺(tái)都有它的數(shù)據(jù)表示方法和類型系統(tǒng)。要實(shí)現(xiàn)互操作性,Web service平臺(tái)必須提供一套標(biāo)準(zhǔn)的類型系統(tǒng),用于溝通不同平臺(tái)、編程語(yǔ)言和組件模型中的不同類型系統(tǒng)。在傳統(tǒng)的分布式系統(tǒng)中,基于界面(interface)的平臺(tái)提供了一些方法來(lái)描述界面、方法和參數(shù)(譯注:如COM和COBAR中的IDL語(yǔ)言)。同樣的,Web service平臺(tái)也必須提供一種標(biāo)準(zhǔn)來(lái)描述Web service,讓客戶可以得到足夠的信息來(lái)調(diào)用這個(gè)Web service。最后,我們還必須有一種方法來(lái)對(duì)這個(gè)Web service進(jìn)行遠(yuǎn)程調(diào)用。這種方法實(shí)際是一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC)。為了達(dá)到互操作性,這種RPC協(xié)議還必須與平臺(tái)和編程語(yǔ)言無(wú)關(guān)。下面就簡(jiǎn)要介紹了組成Web service平臺(tái)的這三個(gè)技術(shù)。
XML和XSD
可擴(kuò)展的標(biāo)記語(yǔ)言(XML)是Web service平臺(tái)中表示數(shù)據(jù)的基本格式。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既是平臺(tái)無(wú)關(guān)的,又是廠商無(wú)關(guān)的。無(wú)關(guān)性是比技術(shù)優(yōu)越性更重要的:軟件廠商是不會(huì)選擇一個(gè)由競(jìng)爭(zhēng)對(duì)手所發(fā)明的技術(shù)的。 XmL解決了數(shù)據(jù)表示的問(wèn)題,但它沒(méi)有定義一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,更沒(méi)有說(shuō)怎么去擴(kuò)展這套數(shù)據(jù)類型。例如,整形數(shù)到底代表什么?16位,32位,還是64位?這些細(xì)節(jié)對(duì)實(shí)現(xiàn)互操作性都是很重要的。W3C制定的XML Schema(XSD)就是專門(mén)解決這個(gè)問(wèn)題的一套標(biāo)準(zhǔn)。它定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類型,并給出了一種語(yǔ)言來(lái)擴(kuò)展這套數(shù)據(jù)類型。Web service平臺(tái)就是用XSD來(lái)作為其數(shù)據(jù)類型系統(tǒng)的。當(dāng)你用某種語(yǔ)言(如VB.NET或C#)來(lái)構(gòu)造一個(gè)Web service時(shí),為了符合Web service標(biāo)準(zhǔn),所有你使用的數(shù)據(jù)類型都必須被轉(zhuǎn)換為XSD類型。你用的工具可能已經(jīng)自動(dòng)幫你完成了這個(gè)轉(zhuǎn)換,但你很可能會(huì)根據(jù)你的需要修改一下轉(zhuǎn)換過(guò)程。
WSDL(WEB服務(wù)描述語(yǔ)言)
你會(huì)怎樣向別人介紹你的Web service有什么功能,以及每個(gè)函數(shù)調(diào)用時(shí)的參數(shù)呢?你可能會(huì)自己寫(xiě)一套文檔,你甚至可能會(huì)口頭上告訴需要使用你的Web service的人。這些非正式的方法至少都有一個(gè)嚴(yán)重的問(wèn)題:當(dāng)程序員坐到電腦前,想要使用你的Web service的時(shí)候,他們的工具(如Visual Studio)無(wú)法給他們提供任何幫助,因?yàn)檫@些工具根本就不了解你的Web service。解決方法是:用機(jī)器能閱讀的方式提供一個(gè)正式的描述文檔。Web service描述語(yǔ)言(WSDL)就是這樣一個(gè)基于XML的語(yǔ)言,用于描述Web service及其函數(shù)、參數(shù)和返回值。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的,這將是一個(gè)很大的好處。一些最新的開(kāi)發(fā)工具既能根據(jù)你的Web service生成WSDL文檔,又能導(dǎo)入WSDL文檔,生成調(diào)用相應(yīng)Web service的代碼。
soap(簡(jiǎn)易對(duì)象訪問(wèn)協(xié)議)
在web service中用來(lái)進(jìn)行服務(wù)器端和客戶端通信的,為服務(wù)端和客戶端交換信息提供了一種標(biāo)準(zhǔn)的工作機(jī)制.SOAP描述了把消息捆綁為XML的工作方式。它還說(shuō)明了發(fā)送消息的發(fā)送方、消息的內(nèi)容和地址以及發(fā)送消息的時(shí)間。
UDDI(統(tǒng)一描述發(fā)布集成)
通用描述發(fā)現(xiàn)和集成 (UDDI) 是用于發(fā)布和查找有關(guān) Web 服務(wù)的信息的工業(yè)規(guī)范。UDDI 定義了用于描述和分類您的組織、它的服務(wù)和有關(guān)公開(kāi)的 Web 服務(wù)接口的技術(shù)詳細(xì)信息的信息框架。
總結(jié)
以上是生活随笔為你收集整理的什么是WebService??的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hibernate 与 spring 松
- 下一篇: wtp-all-in-one-sdk-R