什么是Web 服務(wù)
Web 服務(wù)是一種可以用來解決跨網(wǎng)絡(luò)應(yīng)用集成問題的開發(fā)模式,這種模式為實(shí)現(xiàn)“軟件作為服務(wù)”提供了技術(shù)保障。而“軟件作為服務(wù)”實(shí)質(zhì)上是一種提供軟件服務(wù)的機(jī)制,這種機(jī)制可以在網(wǎng)絡(luò)上暴露可編程接口,并通過這些接口來共享站點(diǎn)開放出來的功能。
從技術(shù)角度來講,Web 服務(wù)實(shí)現(xiàn)了最廣泛的應(yīng)用軟件集成,彌補(bǔ)了傳統(tǒng)軟件開發(fā)模型的限制。Web 服務(wù)產(chǎn)生之前,在網(wǎng)絡(luò)上提供對象服務(wù)通常要采用DCOM(Distributed COM)或CORBA。這兩種技術(shù)各有特點(diǎn),也各自有相當(dāng)廣泛的應(yīng)用。前者運(yùn)行在Windows操作系統(tǒng)上,后者主要運(yùn)行在UNIX系統(tǒng)上,都有著相當(dāng)悠久的歷史。
從概念層次上講,二者具有相近的結(jié)構(gòu),都可以讓客戶軟件實(shí)例化分布在網(wǎng)絡(luò)上遠(yuǎn)端的對象,并最終訪問對象服務(wù)。但是,在具體實(shí)現(xiàn)機(jī)制上,這兩種方案有許多不同。比如在通信協(xié)議方面,DCOM采用的是RPC協(xié)議而CORBA采用的是IIOP協(xié)議。另外,對于客戶端程序而言,訪問提供服務(wù)對象的方法也是大相徑庭,前者通過客戶端代理(proxy),經(jīng)過RPC通道后訪問服務(wù)端的存根(stub)后才可以最終訪問到對象;而后者必須先通過客戶端的存根,然后經(jīng)過IIOP訪問服務(wù)端的骨架(skeleton)才能最終訪問到對象。兩種模式分別如圖9-1和9-2所示。
圖9-1 DCOM方案
為了可以在整個因特網(wǎng)中實(shí)現(xiàn)對服務(wù)的自由訪問,有必要提供一種嶄新的模式或信息交換手段來達(dá)到這個目的。于是,微軟提出了Web 服務(wù)。
Web 服務(wù)的主要特點(diǎn)之一是,客戶端訪問Web 服務(wù)只需要通過因特網(wǎng)標(biāo)準(zhǔn)協(xié)議,如HTTP或XML,以及SOAP,不需要專門的協(xié)議,如RPC或IIOP。因?yàn)镠TTP協(xié)議和XML都是與平臺無關(guān)的標(biāo)準(zhǔn)協(xié)議,因此,可以被任何主流操作系統(tǒng)正確理解和解釋。
另外,更為關(guān)鍵的特性是,Web 服務(wù)可以被XML語言進(jìn)行詳盡的描述。這就是說,提供Web服務(wù)的站點(diǎn)可以提供一個(或多個)該站點(diǎn)可以對外提供服務(wù)的描述文件,這個文件的內(nèi)容可以被訪問者理解。更進(jìn)一步說,就是客戶端可以從網(wǎng)絡(luò)上直接得到代碼!
也許舉個例子能更清楚地說明問題。假設(shè)開發(fā)人員需要搭建一個商務(wù)網(wǎng)站,這個網(wǎng)站需要一個驗(yàn)證客戶合法身份的功能。為了實(shí)現(xiàn)這個功能,下面分別描述了可以采用的辦法。
● 由開發(fā)人員自己編寫安全驗(yàn)證所需的全部代碼。這樣做顯然不現(xiàn)實(shí),一個安全驗(yàn)證程序涉及到諸多專業(yè)知識,并需要相當(dāng)長的時間才能夠完成。
● 購買這段程序(通常是一個ActiveX組件)。在收到組件之后,首先將組件注冊在自己的機(jī)器上,然后根據(jù)組件類型庫產(chǎn)生接口文件。在實(shí)際編程中就可以使用這個接口文件來訪問組件服務(wù)。很明顯,這種方式在目前使用得最為廣泛。
● 有了Web 服務(wù),情況就不同了,只需要在自己的程序中通過訪問某個服務(wù)的URL地址,得到一份XML描述,并使用這個描述文件產(chǎn)生一個接口文件。然后,在實(shí)際編程中,只需要通過這個接口文件來訪問服務(wù)就可以了。一定要注意,這個服務(wù)可不是運(yùn)行在我們機(jī)器上的,是運(yùn)行在因特網(wǎng)上URL地址所指向的地方。
如果這個網(wǎng)站需要更多的功能,而這些功能在一些網(wǎng)站上已經(jīng)被開發(fā)出來,并以各種方式(免費(fèi)或收費(fèi))公開出來供所有需要它們的開發(fā)人員來使用,那么,盡量使用它們好了。當(dāng)然,如果開發(fā)人員所在的公司,也想成為Web 服務(wù)提供者的話,同樣可以輕松地將他們編寫的Web 服務(wù)在網(wǎng)絡(luò)上公布出來,供大家使用。
與緊耦合服務(wù)概念相對,由于Web 服務(wù)具備通信協(xié)議標(biāo)準(zhǔn)性和服務(wù)自描述性,所以,使用Web 服務(wù)可以開發(fā)出松耦合的分布式應(yīng)用程序來。這也是Web 服務(wù)要實(shí)現(xiàn)的最根本的設(shè)計(jì)目標(biāo)。Web 服務(wù)的體系如圖9-3所示。
圖9-3 Web Service體系