在本系列的上一篇文章中,我就為什么需要Web服務(wù),從商業(yè)利益需求的角度進(jìn)行了分析。本文將結合技術(shù)驅動(dòng)的發(fā)展需求,詳細介紹從技術(shù)上來(lái)看,到底是么是Web服務(wù),以及Web服務(wù)的應用分類(lèi)。就技術(shù)角度而言,無(wú)論從哪個(gè)角度來(lái)看,Web服務(wù)都是對象/組件技術(shù)在Internet中的延伸。
本文所引用的資源主要包括兩類(lèi),一類(lèi)是Web服務(wù)的技術(shù)資源網(wǎng)站,包含了大量Web服務(wù)的技術(shù)信息,另一類(lèi)是Web服務(wù)“stack"系列技術(shù)規范,他們是一個(gè)整體的技術(shù)體系,包括UDDI、SOAP、WSDL、XML等。本文的最后給出了這些資源的鏈接,有興趣的讀者可以通過(guò)這些資源鏈接找到所需的內容。
Web Service "Stack"
在前一節中,我們已經(jīng)了解到為了完成在松散耦合的環(huán)境下的對象訪(fǎng)問(wèn),以及在基本對象訪(fǎng)問(wèn)之上的諸如事務(wù)、工作流、安全機制等。實(shí)現一個(gè)完整的Web服務(wù)體系需要有一系列的協(xié)議規范來(lái)支撐。
Figure 1. Web Service "stack"
其中,綠色部分是先前已經(jīng)定義好的并且廣泛使用的傳輸層和網(wǎng)絡(luò )層的標準:IP、HTTP、SMTP等。而藍色部分是目前開(kāi)發(fā)的Web服務(wù)的相關(guān)標準協(xié)議,包括服務(wù)調用協(xié)議SOAP、服務(wù)描述協(xié)議WSDL和服務(wù)發(fā)現/集成協(xié)議UDDI,以及服務(wù)工作流描述語(yǔ)言WSFL。而橙色部分描述的是更高層的待開(kāi)發(fā)的關(guān)于路由、可靠性以及事務(wù)等方面的協(xié)議。黃色部分是各個(gè)協(xié)議層的公用機制,這些機制一般由外部的正交機制來(lái)完成。
從以上這個(gè)技術(shù)層次圖我們看以看到,Web服務(wù)追求的第一目標是簡(jiǎn)單性??赡艽蠹視?huì )覺(jué)得很奇怪,有那么多協(xié)議,怎么能說(shuō)他簡(jiǎn)單。
首先,這些協(xié)議本身都是簡(jiǎn)單的,無(wú)論是HTTP, FTP等傳統的TCP/IP系統的網(wǎng)絡(luò )協(xié)議,還是SOAP, WSDL, UDDI, WSFL等基于XML的協(xié)議,他們設計原則中的一個(gè)最重要點(diǎn)就是力求簡(jiǎn)單性。相信大家如果對XML、SOAP等有深入了解的話(huà),一定會(huì )深深體會(huì )這一點(diǎn)。
其次,一個(gè)可以使用的Web服務(wù)應當按照需要選用若干層次的功能,而無(wú)需所有的特性。比如在目前狀況下,一個(gè)簡(jiǎn)單應用可能只要使用WSDL/SOAP就可以架構一個(gè)符合規范的Web服務(wù)了。
最后,所有的機制完全是基于現有的技術(shù),并沒(méi)有創(chuàng )造一個(gè)完全的新體系。無(wú)論是IPv4、HTTP、FTP這些現有的網(wǎng)絡(luò )協(xié)議,還是SOAP、WSDL等這些基于XML而定義的協(xié)議都是遵循著(zhù)一個(gè)原則:繼承原有的被廣泛接受的技術(shù),這樣才能使得Web服務(wù)被廣泛接受。