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