本文是架構(gòu)
Web
服務(wù)的系列文章的第二篇,從
Web
服務(wù)的技術(shù)定義開(kāi)始,來(lái)探討什么是
Web
服務(wù)。首先,作者從技術(shù)角度詳細(xì)分析了
Web
服務(wù)作為
Internet
環(huán)境下的軟件組件的基本角色,從這個(gè)基本角色開(kāi)始,詳細(xì)介紹了這個(gè)組件對(duì)象的包裝規(guī)范
Web Service "stack"
,并對(duì)
Web
服務(wù)的應(yīng)用做了分類,最后借助
Garnter Group
的材料考察了
Web
服務(wù)的當(dāng)前發(fā)展?fàn)顩r。
在本系列的上一篇文章中,我就為什么需要
Web
服務(wù),從商業(yè)利益需求的角度進(jìn)行了分析。本文將結(jié)合技術(shù)驅(qū)動(dòng)的發(fā)展需求,詳細(xì)介紹從技術(shù)上來(lái)看,到底什么是
Web
服務(wù),以及
Web
服務(wù)的應(yīng)用分類。就技術(shù)角度而言,無(wú)論從哪個(gè)角度來(lái)看,
Web
服務(wù)都是對(duì)象
/
組件技術(shù)在
Internet
中的延伸。
本文所引用的資源主要包括兩類,一類是
Web
服務(wù)的技術(shù)資源網(wǎng)站,包含了大量
Web
服務(wù)的技術(shù)信息,另一類是
Web
服務(wù)
“stack"
系列技術(shù)規(guī)范,他們是一個(gè)整體的技術(shù)體系,包括
UDDI
、
SOAP
、
WSDL
、
XML
等。本文的最后給出了這些資源的鏈接,有興趣的讀者可以通過(guò)這些
資源鏈接
找到所需的內(nèi)容。
Web
對(duì)象
從外部的使用者的角度而言,
Web
服務(wù)是一種部署在
Web
上的對(duì)象
/
組件,它具備以下特征:
-
完好的封裝性
,
Web
服務(wù)既然是一種部署在
Web
上的對(duì)象,自然具備對(duì)象的良好封裝性,對(duì)于使用者而言,他能且僅能看到該對(duì)象提供的功能列表。
-
松散耦合
,這一特征也是源于對(duì)象
/
組件技術(shù),當(dāng)一個(gè)
Web
服務(wù)的實(shí)現(xiàn)發(fā)生變更的時(shí)候,調(diào)用者是不會(huì)感到這一點(diǎn)的,對(duì)于調(diào)用者來(lái)說(shuō),只要
Web
服務(wù)的調(diào)用界面不變,
Web
服務(wù)的實(shí)現(xiàn)任何變更對(duì)他們來(lái)說(shuō)都是透明的,甚至是當(dāng)
Web
服務(wù)的實(shí)現(xiàn)平臺(tái)從
J2EE
遷移到了
.NET
或者是相反的遷移流程,用戶都可以對(duì)此一無(wú)所知。對(duì)于松散耦合而言,尤其是在
Internet
環(huán)境下的
Web
服務(wù)而言,需要有一種適合
Internet
環(huán)境的消息交換協(xié)議。而
XML/SOAP
正是目前最為適合的消息交換協(xié)議。
-
使用協(xié)約的規(guī)范性
,這一特征從對(duì)象而來(lái),但相比一般對(duì)象其界面規(guī)范更加規(guī)范化和易于機(jī)器理解。首先,作為
Web
服務(wù),對(duì)象界面所提供的功能應(yīng)當(dāng)使用標(biāo)準(zhǔn)的描述語(yǔ)言來(lái)描述
(
比如
WSDL)
;其次,由標(biāo)準(zhǔn)描述語(yǔ)言描述的服務(wù)界面應(yīng)當(dāng)是能夠被發(fā)現(xiàn)的,因此這一描述文檔需要被存儲(chǔ)在私有的或公共的注冊(cè)庫(kù)里面。同時(shí),使用標(biāo)準(zhǔn)描述語(yǔ)言描述的使用協(xié)約將不僅僅是服務(wù)界面,它將被延伸到
Web
服務(wù)的聚合、跨
Web
服務(wù)的事務(wù)、工作流等,而這些又都需要服務(wù)質(zhì)量
(QoS)
的保障。其次,我們知道安全機(jī)制對(duì)于松散耦合的對(duì)象環(huán)境的重要性,因此我們需要對(duì)諸如授權(quán)認(rèn)證、數(shù)據(jù)完整性
(
比如簽名機(jī)制
)
、消息源認(rèn)證以及事務(wù)的不可否認(rèn)性等運(yùn)用規(guī)范的方法來(lái)描述、傳輸和交換。最后,在所有層次的處理都應(yīng)當(dāng)是可管理的,因此需要對(duì)管理協(xié)約運(yùn)用同樣的機(jī)制。
-
使用標(biāo)準(zhǔn)協(xié)議規(guī)范
,作為
Web
服務(wù),其所有公共的協(xié)約完全需要使用開(kāi)放的標(biāo)準(zhǔn)協(xié)議進(jìn)行描述、傳輸和交換。這些標(biāo)準(zhǔn)協(xié)議具有完全免費(fèi)的規(guī)范,以便由任意方進(jìn)行實(shí)現(xiàn)。一般而言,絕大多數(shù)規(guī)范將最終有
W3C
或
OASIS
作為最終版本的發(fā)布方和維護(hù)方。
-
高度可集成能力
。由于
Web
服務(wù)采取簡(jiǎn)單的、易理解的標(biāo)準(zhǔn)
Web
協(xié)議作為組件界面描述和協(xié)同描述規(guī)范,完全屏蔽了不同軟件平臺(tái)的差異,無(wú)論是
CORBA
、
DCOM
還是
EJB
都可以通過(guò)這一種標(biāo)準(zhǔn)的協(xié)議進(jìn)行互操作,實(shí)現(xiàn)了在當(dāng)前環(huán)境下最高的可集成性。
Web Service "Stack"
在前一節(jié)中,我們已經(jīng)了解到為了完成在松散耦合的環(huán)境下的對(duì)象訪問(wèn),以及在基本對(duì)象訪問(wèn)之上的諸如事務(wù)、工作流、安全機(jī)制等。實(shí)現(xiàn)一個(gè)完整的
Web
服務(wù)體系需要有一系列的協(xié)議規(guī)范來(lái)支撐。
Figure 1. Web Service "stack"
其中,綠色部分是先前已經(jīng)定義好的并且廣泛使用的傳輸層和網(wǎng)絡(luò)層的標(biāo)準(zhǔn):
IP
、
HTTP
、
SMTP
等。而藍(lán)色部分是目前開(kāi)發(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ù)工作流描述語(yǔ)言
WSFL
。而橙色部分描述的是更高層的待開(kāi)發(fā)的關(guān)于路由、可靠性以及事務(wù)等方面的協(xié)議。黃色部分是各個(gè)協(xié)議層的公用機(jī)制,這些機(jī)制一般由外部的正交機(jī)制來(lái)完成。
從以上這個(gè)技術(shù)層次圖我們看以看到,
Web
服務(wù)追求的第一目標(biāo)是簡(jiǎn)單性。可能大家會(huì)覺(jué)得很奇怪,有那么多協(xié)議,怎么能說(shuō)他簡(jiǎn)單。
首先,這些協(xié)議本身都是簡(jiǎn)單的,無(wú)論是
HTTP, FTP
等傳統(tǒng)的
TCP/IP
系統(tǒng)的網(wǎng)絡(luò)協(xié)議,還是
SOAP, WSDL, UDDI, WSFL
等基于
XML
的協(xié)議,他們?cè)O(shè)計(jì)原則中的一個(gè)最重要點(diǎn)就是力求簡(jiǎn)單性。相信大家如果對(duì)
XML
、
SOAP
等有深入了解的話,一定會(huì)深深體會(huì)這一點(diǎn)。
其次,一個(gè)可以使用的
Web
服務(wù)應(yīng)當(dāng)按照需要選用若干層次的功能,而無(wú)需所有的特性。比如在目前狀況下,一個(gè)簡(jiǎn)單應(yīng)用可能只要使用
WSDL/SOAP
就可以架構(gòu)一個(gè)符合規(guī)范的
Web
服務(wù)了。
最后,所有的機(jī)制完全是基于現(xiàn)有的技術(shù),并沒(méi)有創(chuàng)造一個(gè)完全的新體系。無(wú)論是
IPv4
、
HTTP
、
FTP
這些現(xiàn)有的網(wǎng)絡(luò)協(xié)議,還是
SOAP
、
WSDL
等這些基于
XML
而定義的協(xié)議都是遵循著一個(gè)原則:繼承原有的被廣泛接受的技術(shù),這樣才能使得
Web
服務(wù)被廣泛接受。
Web
服務(wù)的類別
綜合當(dāng)今的
Web
應(yīng)用以及
Web
服務(wù)的特點(diǎn),我們認(rèn)為
Web
服務(wù)實(shí)施的領(lǐng)域可以分為四類:
-
Business-Oriented Web Service:
該類服務(wù)針對(duì)的是那些面向企業(yè)應(yīng)用服務(wù),包括企業(yè)內(nèi)部的
ERP
系統(tǒng),企業(yè)間的
SCM/CRM
等系統(tǒng)。當(dāng)這些系統(tǒng)以
Web
服務(wù)的形式在網(wǎng)絡(luò)
(Internet
和
intranet)
中出現(xiàn)時(shí),企業(yè)內(nèi)的應(yīng)用集成將更容易,而在企業(yè)間的眾多合作伙伴的系統(tǒng)對(duì)接也將不再是無(wú)法完成的任務(wù)。目前現(xiàn)有的解決方案和產(chǎn)品的提供商有
Bowstreet
、
Epicentric
等。
-
Consumer-Oriented Web Service:
此類服務(wù)針對(duì)的是那些原先的
B2C
的網(wǎng)站的改造,為這些
Browser-Oriented
的
Web
應(yīng)用增加
(
注意是增加
)
了
Web
服務(wù)的應(yīng)用界面,使得第三方的桌面工具或其自身提供的增值的桌面工具能夠利用更優(yōu)秀的用戶界面提供跨越多個(gè)
B2C
服務(wù)的桌面服務(wù)。這將使得用戶使用
Internet
更為方便,能夠獲得更加便捷的服務(wù)。比如我們完全就可以在個(gè)人理財(cái)桌面系統(tǒng)中集成
(
調(diào)用
)Internet
上的股票價(jià)格查詢
Web
服務(wù)、機(jī)票預(yù)定
Web
服務(wù)等,使得個(gè)人理財(cái)應(yīng)用的自動(dòng)化程度更高。
-
Device-Oriented Web Service:
此類服務(wù)的使用終端一般是手持設(shè)備和日用家電,對(duì)于前者而言,可以在不用修改網(wǎng)絡(luò)服務(wù)的體系架構(gòu)的前提下,令先前的網(wǎng)絡(luò)服務(wù)支持除
PC
以外的各種終端,比如
Palm
、
PocketPC
、手機(jī)等。如此,那些天氣預(yù)報(bào)服務(wù)、
Email
服務(wù)、主動(dòng)信息服務(wù)等將更為有效和便捷。而后者對(duì)于日用家電,則可能是一個(gè)市場(chǎng)的啟動(dòng)期,有了
Web
服務(wù)作為基礎(chǔ)框架,智能型的日用家電將真正獲得標(biāo)準(zhǔn)的支持,從而有了廣泛使用的可能。
-
System-Oriented Web Service:
一些傳統(tǒng)意義上的系統(tǒng)服務(wù),比如用戶權(quán)限認(rèn)證,系統(tǒng)監(jiān)控等,如果被遷移到全球范圍的
Internet
上,或者企業(yè)內(nèi)部的
intranet
上,其作用范圍將從單個(gè)系統(tǒng)或局部網(wǎng)絡(luò)拓展到整個(gè)企業(yè)網(wǎng)絡(luò)或整個(gè)
Internet
。如此,基于同一系統(tǒng)服務(wù)的不同應(yīng)用將得以在整個(gè)
Internet
環(huán)境中部署,譬如跨國(guó)企業(yè)的所有在線服務(wù)可以使用同一個(gè)用戶權(quán)限認(rèn)證
Web
服務(wù)。
Web
服務(wù)
:
當(dāng)今的技術(shù)最亮點(diǎn)
Figure 2. Web
服務(wù)的當(dāng)前發(fā)展?fàn)顩r
以上這幅圖是
Gartner Group
在研究了所有
IT
主流時(shí)尚技術(shù)的發(fā)展道路后,作出的抽象模型。
Y
軸表明技術(shù)的受關(guān)注程度,而
X
軸則表示技術(shù)的應(yīng)用的成熟度。每一項(xiàng)技術(shù)在從出現(xiàn)到成熟的整個(gè)過(guò)程都將沿著圖中的曲線前進(jìn),而且典型地,都將被劃分為五個(gè)階段:
-
技術(shù)顯現(xiàn):一門(mén)技術(shù)被發(fā)明或定義之后,開(kāi)始進(jìn)入公眾的視野;
-
不斷膨脹的期望期:由于該項(xiàng)技術(shù)的劃時(shí)代的突破,使人們對(duì)這項(xiàng)技術(shù)有著無(wú)比美好的想象和期望,這一階段類似
"
網(wǎng)絡(luò)的泡沫器
"
;
-
希望破滅之后的醒悟期:由于每項(xiàng)技術(shù)都不是萬(wàn)能的,真正獲得使用仍然需要?jiǎng)?wù)實(shí)的加以應(yīng)用研究,因此此時(shí)人們發(fā)現(xiàn)這項(xiàng)技術(shù)似乎并沒(méi)有期望中那么有用,這一階段類似
"
網(wǎng)絡(luò)的泡沫破滅
"
;
-
豁然開(kāi)朗的應(yīng)用發(fā)展期:經(jīng)過(guò)了一個(gè)階段的開(kāi)發(fā)和研究,該項(xiàng)技術(shù)終于走上了良性發(fā)展的軌道,越來(lái)越多的人接受并使用了該項(xiàng)技術(shù);
-
大量的工業(yè)化生產(chǎn)期:該項(xiàng)技術(shù)成為業(yè)界主流,大量應(yīng)用在具體的環(huán)境中。