- 相關(guān)推薦
WebServices簡(jiǎn)介
SOA ,即Service Oriented Architecture ,中文一般理解為面向服務(wù)的架構(gòu)。既然說(shuō)是一種架構(gòu)的話,所以一般認(rèn)為 SOA 是包含了運(yùn)行環(huán)境、編程模型、架構(gòu)風(fēng)格和相關(guān)方法論等在內(nèi)的一整套新的分布式軟件系統(tǒng)構(gòu)造方法和環(huán)境,涵蓋服務(wù)的整個(gè)生命周期。而在 SOA 的架構(gòu)風(fēng)格中,服務(wù)是最核心的抽象手段。SOA 中的服務(wù)是構(gòu)建在一些開放標(biāo)準(zhǔn)的基礎(chǔ)之上的,Web服務(wù)定義了如何在異構(gòu)系統(tǒng)之間實(shí)現(xiàn)通信的標(biāo)準(zhǔn)化方法,從而就使得 Web 服務(wù)可以跨越運(yùn)行平臺(tái)和實(shí)現(xiàn)語(yǔ)言,同時(shí)也使得 Web 服務(wù)成為了實(shí)現(xiàn) SOA 中服務(wù)的主要技術(shù)。
有沒有一種辦法可以實(shí)現(xiàn)跨應(yīng)用程序通信和跨平臺(tái)通信呢,也就是如何可以實(shí)現(xiàn)應(yīng)用程序 A 可以和應(yīng)用程序 B 的通信?或者說(shuō)如何實(shí)現(xiàn)Java 寫的應(yīng)用程序和用.Net開發(fā)的應(yīng)用程序之間的通信?拿騰訊QQ的天氣預(yù)報(bào)工具來(lái)舉例,天氣預(yù)報(bào)功能是如何實(shí)現(xiàn)的呢?有一種辦法,那就是騰訊公司放個(gè)衛(wèi)星上天,并且在公司中成立一個(gè)氣象部門,天天關(guān)注于天氣,然后實(shí)時(shí)更新騰訊 QQ 的天氣預(yù)報(bào)信息。確實(shí),這種辦法確實(shí)行得通,但很蠢。
再舉一個(gè)跨平臺(tái)的例子,假如有兩個(gè)公司,一個(gè)公司項(xiàng)目使用. Net 開發(fā),另一個(gè)使用 Java 開發(fā),這兩個(gè)公司本來(lái)相互獨(dú)立,但是這兩個(gè)公司如果需要把兩個(gè)項(xiàng)目結(jié)合起來(lái),兩個(gè)項(xiàng)目之間需要通信,此時(shí)兩個(gè)項(xiàng)目基于不同的平臺(tái)。
第三個(gè)例子,一個(gè)公司使用的服務(wù)器是 Windows Server 2008,那么它如何和 IT 供應(yīng)商的UNIX 或是 Linux 服務(wù)器進(jìn)行連接?
WebServices特點(diǎn)介紹
WebServices 提供一個(gè)建立分布式應(yīng)用的平臺(tái),使得運(yùn)行在不同操作系統(tǒng)和不同設(shè)備上的軟件,或者是用不同的程序語(yǔ)言和不同廠商的軟件開發(fā)工具開發(fā)的軟件,所有可能的已開發(fā)和部署的軟件,能夠利用這一平臺(tái)實(shí)現(xiàn)分布式計(jì)算的目的。WebServices的思想是:使得應(yīng)用程序也具有 Web 分布式編程模型的松散耦合性。
1. WebServices 是自包含的。即在客戶端不需要附加任何軟件,只要客戶機(jī)支持 HTTP 和XML 就 OK 了。
2. WebServices 是自我描述的。在客戶端和服務(wù)端都不需要知道除了請(qǐng)求和響應(yīng)消息的格式和內(nèi)容外的任何事。
3. WebServices 是跨平臺(tái)和跨語(yǔ)言的?蛻舳撕头⻊(wù)端均可以在不同的平臺(tái)和語(yǔ)言環(huán)境中實(shí)現(xiàn),同時(shí),不必為了支持 WebServices 而更改現(xiàn)有的代碼。
4. WebServices 是基于開放和標(biāo)準(zhǔn)的。XML和HTTP 是WebServices 的主要技術(shù)基礎(chǔ),而 XML 和HTTP早就成了業(yè)內(nèi)標(biāo)準(zhǔn)了。
5. WebServices 是動(dòng)態(tài)的。
6. WebServices 是可以組合的。即通過(guò)一個(gè) WebService 訪問(wèn)另外一個(gè) WebService 來(lái)達(dá)到組合的目的。通過(guò)組合 WebServices 便可以將簡(jiǎn)單的 WebServices 聚合成為實(shí)現(xiàn)更多復(fù)雜功能的復(fù)雜的服務(wù)。
7. WebServices 是松散耦合的。它完全解耦了客戶端和服務(wù)端。
8. WebServices 提供編程訪問(wèn)的能力。換句話說(shuō),就是可以通過(guò)編寫程序來(lái)訪問(wèn)Web 服務(wù)。
9. WebServices 是基于經(jīng)過(guò)考驗(yàn)的成熟技術(shù)上構(gòu)建的。比如 XML 和 HTTP。
10. WebServices 提供打包現(xiàn)有應(yīng)用程序的能力。
11. WebServices 通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)布,查找和使用。
WebServices到底是什么?
WebServices是基于 XML 和 HTTP 的,(當(dāng)然這是最基本的 WebServices ,也可以通過(guò) HTTPS 或者是 SMTP 來(lái)實(shí)現(xiàn)通信),不論Java平臺(tái)還是.Net平臺(tái)開發(fā)(或者是是使用 Web 服務(wù)),這一切都和Web服務(wù)無(wú)關(guān),只需要關(guān)注通過(guò) HTTP 協(xié)議來(lái)傳輸 XML 就 OK了,至于這些 XML 是如何被服務(wù)提供者開發(fā)出來(lái)的或者這些 XML 是如何被服務(wù)請(qǐng)求者使用的(小編按:如何實(shí)現(xiàn)很重要,后面會(huì)提到),這些都和應(yīng)用開發(fā)無(wú)關(guān),這里可以看出Web服務(wù)的另一個(gè)優(yōu)勢(shì),那就是跨語(yǔ)言跨平臺(tái)(實(shí)現(xiàn)協(xié)同工作),通過(guò) Web 服務(wù)可以實(shí)現(xiàn)不同應(yīng)用程序和不同平臺(tái)之間的通信,Web服務(wù)允許獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件或者是軟件平臺(tái)和編寫服務(wù)所使用編程語(yǔ)言來(lái)實(shí)現(xiàn)(小編按:WebServices對(duì)硬件基礎(chǔ)、軟件平臺(tái)、開發(fā)語(yǔ)言不關(guān)心)。
以上可以回答開頭引子中提出的三個(gè)問(wèn)題,即:
1)QQ天氣預(yù)報(bào)問(wèn)題:通過(guò)訪問(wèn)氣象局發(fā)布的天氣狀況的WebServices來(lái)實(shí)現(xiàn)
2)Java 應(yīng)用程序和. Net應(yīng)用程序之間的通信
3)解決 Linux 或是UNIX 和 Windows Server 2008 之間進(jìn)行連接問(wèn)題。
另外通過(guò)使用不同的 Web 服務(wù),我們可以從不同的平臺(tái)和操作系統(tǒng)進(jìn)行訪問(wèn),從而提高不同應(yīng)用程序共享數(shù)據(jù)和應(yīng)用的能力。
WebServices三種基本元素之SOAP
SOAP 即 Simple Object AccessProtocol,也就是簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議。其指導(dǎo)理念是“唯一一個(gè)沒有發(fā)明任何新技術(shù)的技術(shù)”(小編按:通過(guò)XML和HTTP就可以實(shí)現(xiàn)),是一種用于訪問(wèn) Web 服務(wù)的協(xié)議。即SOAP基于XML和HTTP,其通過(guò)XML來(lái)實(shí)現(xiàn)消息描述,然后再通過(guò) HTTP 實(shí)現(xiàn)消息傳輸。
SOAP 協(xié)議的一個(gè)重要特點(diǎn)是它獨(dú)立于底層傳輸機(jī)制,Web 服務(wù)應(yīng)用程序可以根據(jù)需要選擇自己的數(shù)據(jù)傳輸協(xié)議,可以在發(fā)送消息時(shí)來(lái)確定相應(yīng)傳輸機(jī)制。
由于 HTTP 協(xié)議本身的一些特點(diǎn)和局限性,使得當(dāng) SOAP 使用HTTP 綁定的 Web 服務(wù)并不能滿足某些企業(yè)應(yīng)用的需求。比如,HTTP 不是一個(gè)可靠傳輸協(xié)議,所以有可能在傳輸過(guò)程中出現(xiàn)問(wèn)題,
然后 HTTP 協(xié)議基于Request/Response 模型,也就是說(shuō)客戶端需要在等待響應(yīng)消息接收完成后才能繼續(xù)執(zhí)行,從而容易出現(xiàn)時(shí)延的問(wèn)題。
基于上面的這些需求,便需要選擇合適的傳輸協(xié)議了。
WebServices三種基本元素之 WSDL
WSDL 即Web Services Description Language也就是Web服務(wù)描述語(yǔ)言,是基于 XML的用于描述 Web 服務(wù)以及如何訪問(wèn) Web 服務(wù)的語(yǔ)言。
服務(wù)提供者通過(guò)服務(wù)描述將所有用于訪問(wèn) Web服務(wù)的規(guī)范傳送給服務(wù)請(qǐng)求者,要實(shí)現(xiàn) Web服務(wù)體系結(jié)構(gòu)的松散耦合,服務(wù)描述是一個(gè)關(guān)鍵,不管是請(qǐng)求者還是服務(wù)提供者,通過(guò)服務(wù)描述便可以不必了解對(duì)方的底層平臺(tái),編程語(yǔ)言等,服務(wù)描述與底層的 SOAP 基礎(chǔ)結(jié)構(gòu)相結(jié)合,足以封裝服務(wù)請(qǐng)求者的應(yīng)用程序和服務(wù)提供者的 Web服務(wù)之間的這個(gè)細(xì)節(jié)。
WSDL 描述了 Web服務(wù)的三個(gè)基本屬性:
1. 服務(wù)所提供的操作
2. 如何訪問(wèn)服務(wù)
3. 服務(wù)位于何處(通過(guò) URL 來(lái)確定就 OK 了)
WebServices三種基本元素之 UDDI
UDDI 即 Universal Description,Discovery and Integration,也就是通用的描述、發(fā)現(xiàn)以及整合,用來(lái)描述了訪問(wèn)特定的Web服務(wù)的一些相關(guān)的信息。
前面說(shuō)到WSDL是用來(lái)描述了訪問(wèn)特定的 Web 服務(wù)的一些相關(guān)的信息,但是如何來(lái)發(fā)現(xiàn)我們所需要的 Web 服務(wù),而 Web 服務(wù)提供商又如何將自己開發(fā)的 Web 服務(wù)公布到因特網(wǎng)上?
這就需要使用到 UDDI,它是一個(gè)跨產(chǎn)業(yè),跨平臺(tái)的開放性架構(gòu),可以幫助 Web 服務(wù)提供商在互聯(lián)網(wǎng)上發(fā)布 Web 服務(wù)的信息。
UDDI 是一種目錄服務(wù),企業(yè)可以通過(guò) UDDI 來(lái)注冊(cè)和搜索 Web 服務(wù),簡(jiǎn)單來(lái)說(shuō),UDDI 就是一個(gè)目錄,只不過(guò)在這個(gè)目錄中存放的是一些關(guān)于 Web 服務(wù)的信息而已。
小編按:WebServices三種基本元素在科普文里的描述比較難懂,事實(shí)上這些理論描述和實(shí)際應(yīng)用的感受完全不同。引用一個(gè)非常簡(jiǎn)單的比喻,可能更加容易理解:
Web Services:是一個(gè)可以將應(yīng)用程序變?yōu)閣eb應(yīng)用程序,將自己本地的應(yīng)用程序信息通過(guò)網(wǎng)絡(luò),發(fā)布到網(wǎng)絡(luò)當(dāng)中,讓別人通過(guò)瀏覽器等訪問(wèn)本地的信息。
SOAP:是定義訪問(wèn)Web Services的協(xié)議,也就是哪些是可以訪問(wèn)的,怎樣的格式才能夠訪問(wèn),返回的格式又是什么樣的,這些都是SOAP定義的。
WSDL:是描述SOAP協(xié)議的具體語(yǔ)言,用WSDL實(shí)現(xiàn)SOAP協(xié)議,把它寫成文件,直接訪問(wèn)。
UDDI:是把這些web services 收集和存儲(chǔ)起來(lái),這樣當(dāng)別人訪問(wèn)這些信息的時(shí)候就從UDDI中查找,看有沒有這個(gè)信息存在。
【W(wǎng)ebServices簡(jiǎn)介】相關(guān)文章:
IBM簡(jiǎn)介08-11
WAP的簡(jiǎn)介10-03
SOAP簡(jiǎn)介08-15
圍棋的簡(jiǎn)介09-25
拓展訓(xùn)練簡(jiǎn)介10-20
冬至的由來(lái)簡(jiǎn)介10-25
中國(guó)的紅茶簡(jiǎn)介08-20
韓國(guó)料理簡(jiǎn)介08-16
瑜伽分類及簡(jiǎn)介07-07