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