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