什么是Web 服務(wù)
Web 服務(wù)是一種可以用來(lái)解決跨網(wǎng)絡(luò )應用集成問(wèn)題的開(kāi)發(fā)模式,這種模式為實(shí)現“軟件作為服務(wù)”提供了技術(shù)保障。而“軟件作為服務(wù)”實(shí)質(zhì)上是一種提供軟件服務(wù)的機制,這種機制可以在網(wǎng)絡(luò )上暴露可編程接口,并通過(guò)這些接口來(lái)共享站點(diǎn)開(kāi)放出來(lái)的功能。
從技術(shù)角度來(lái)講,Web 服務(wù)實(shí)現了最廣泛的應用軟件集成,彌補了傳統軟件開(kāi)發(fā)模型的限制。Web 服務(wù)產(chǎn)生之前,在網(wǎng)絡(luò )上提供對象服務(wù)通常要采用DCOM(Distributed COM)或CORBA。這兩種技術(shù)各有特點(diǎn),也各自有相當廣泛的應用。前者運行在Windows操作系統上,后者主要運行在UNIX系統上,都有著(zhù)相當悠久的歷史。
從概念層次上講,二者具有相近的結構,都可以讓客戶(hù)軟件實(shí)例化分布在網(wǎng)絡(luò )上遠端的對象,并最終訪(fǎng)問(wèn)對象服務(wù)。但是,在具體實(shí)現機制上,這兩種方案有許多不同。比如在通信協(xié)議方面,DCOM采用的是RPC協(xié)議而CORBA采用的是IIOP協(xié)議。另外,對于客戶(hù)端程序而言,訪(fǎng)問(wèn)提供服務(wù)對象的方法也是大相徑庭,前者通過(guò)客戶(hù)端代理(proxy),經(jīng)過(guò)RPC通道后訪(fǎng)問(wèn)服務(wù)端的存根(stub)后才可以最終訪(fǎng)問(wèn)到對象;而后者必須先通過(guò)客戶(hù)端的存根,然后經(jīng)過(guò)IIOP訪(fǎng)問(wèn)服務(wù)端的骨架(skeleton)才能最終訪(fǎng)問(wèn)到對象。兩種模式分別如圖9-1和9-2所示。

圖9-1 DCOM方案

為了可以在整個(gè)因特網(wǎng)中實(shí)現對服務(wù)的自由訪(fǎng)問(wèn),有必要提供一種嶄新的模式或信息交換手段來(lái)達到這個(gè)目的。于是,微軟提出了Web 服務(wù)。
Web 服務(wù)的主要特點(diǎn)之一是,客戶(hù)端訪(fǎng)問(wèn)Web 服務(wù)只需要通過(guò)因特網(wǎng)標準協(xié)議,如HTTP或XML,以及SOAP,不需要專(zhuān)門(mén)的協(xié)議,如RPC或IIOP。因為HTTP協(xié)議和XML都是與平臺無(wú)關(guān)的標準協(xié)議,因此,可以被任何主流操作系統正確理解和解釋。
另外,更為關(guān)鍵的特性是,Web 服務(wù)可以被XML語(yǔ)言進(jìn)行詳盡的描述。這就是說(shuō),提供Web服務(wù)的站點(diǎn)可以提供一個(gè)(或多個(gè))該站點(diǎn)可以對外提供服務(wù)的描述文件,這個(gè)文件的內容可以被訪(fǎng)問(wèn)者理解。更進(jìn)一步說(shuō),就是客戶(hù)端可以從網(wǎng)絡(luò )上直接得到代碼!
也許舉個(gè)例子能更清楚地說(shuō)明問(wèn)題。假設開(kāi)發(fā)人員需要搭建一個(gè)商務(wù)網(wǎng)站,這個(gè)網(wǎng)站需要一個(gè)驗證客戶(hù)合法身份的功能。為了實(shí)現這個(gè)功能,下面分別描述了可以采用的辦法。
● 由開(kāi)發(fā)人員自己編寫(xiě)安全驗證所需的全部代碼。這樣做顯然不現實(shí),一個(gè)安全驗證程序涉及到諸多專(zhuān)業(yè)知識,并需要相當長(cháng)的時(shí)間才能夠完成。
● 購買(mǎi)這段程序(通常是一個(gè)ActiveX組件)。在收到組件之后,首先將組件注冊在自己的機器上,然后根據組件類(lèi)型庫產(chǎn)生接口文件。在實(shí)際編程中就可以使用這個(gè)接口文件來(lái)訪(fǎng)問(wèn)組件服務(wù)。很明顯,這種方式在目前使用得最為廣泛。
● 有了Web 服務(wù),情況就不同了,只需要在自己的程序中通過(guò)訪(fǎng)問(wèn)某個(gè)服務(wù)的URL地址,得到一份XML描述,并使用這個(gè)描述文件產(chǎn)生一個(gè)接口文件。然后,在實(shí)際編程中,只需要通過(guò)這個(gè)接口文件來(lái)訪(fǎng)問(wèn)服務(wù)就可以了。一定要注意,這個(gè)服務(wù)可不是運行在我們機器上的,是運行在因特網(wǎng)上URL地址所指向的地方。
如果這個(gè)網(wǎng)站需要更多的功能,而這些功能在一些網(wǎng)站上已經(jīng)被開(kāi)發(fā)出來(lái),并以各種方式(免費或收費)公開(kāi)出來(lái)供所有需要它們的開(kāi)發(fā)人員來(lái)使用,那么,盡量使用它們好了。當然,如果開(kāi)發(fā)人員所在的公司,也想成為Web 服務(wù)提供者的話(huà),同樣可以輕松地將他們編寫(xiě)的Web 服務(wù)在網(wǎng)絡(luò )上公布出來(lái),供大家使用。
與緊耦合服務(wù)概念相對,由于Web 服務(wù)具備通信協(xié)議標準性和服務(wù)自描述性,所以,使用Web 服務(wù)可以開(kāi)發(fā)出松耦合的分布式應用程序來(lái)。這也是Web 服務(wù)要實(shí)現的最根本的設計目標。Web 服務(wù)的體系如圖9-3所示。

圖9-3 Web Service體系
聯(lián)系客服