??????本文審視
XML
、
Web
服務及
SOA
間的關系,并解釋廠商和標準組織如何從那些持續浮現
的
Web
服務規范中形成奇妙的競爭與協同競技場。然后我們從應用架構簡短歷史的敘述著手來對過去的二十年作一個總結。
本文大綱如下:
-
SOA
時間軸(從
XML
到
Web
服務再到
SOA
)
-
SOA
的持續進化(標準組織與貢獻廠商)
-
SOA
的根源(
SOA
與過去架構的比較)
這個主題順序可能有一點奇怪。我們以最近及當前的開發開始,以回顧過去架構平臺而結束。簡單地選擇了這個結構,是因為本文最后環節的信息或許不是每個人
都需要
閱讀。
我們從講述形成當前
SOA
平臺的關鍵工業開發入手來建立時間軸。然后我們看一看
SOA
在它的權限范圍內,如何作為當代架構的平臺而改變了
XML
與
Web
服務技術的角色。
如同
HTML
,擴展標記語言(
XML
)系
W3C
所創建,源自流行的標準通用標記語言(
SGML
),它在
60
年代后期就已存在。這是廣泛使用的元語言,允許組織增加原始文檔數據。
XML
在
90
年代后期的電子商務運動中聲名鵲起,服務器端腳本語言可以經由互聯網而處理業務。通過
XML
的使用,開發者能夠給任何片段附加上意義和上下文,再跨越互聯網協議傳輸。
XML
不僅被用于以標準化的方式來表達數據,其語言自身還被用作一系列的附加規范的基礎。
XML Schema
定義語言(
XSD
)與
XSL
轉換語言(
XSLT
)都以
XML
表達。這些規范,事實上已成為關鍵核心
XML
技術集的關鍵部分。
XML
表達架構代表了
SOA
的基礎層。在其內部,
XML
建立了在服務各處流動的消息格式與結構。
XSD schemas
保持消息數據的完整與有效性,而且
XSLT
使得不同的數據表達間通過
schema
映射而能夠互相通信。換句話說,沒有
XML
你在
SOA
內寸步難行。
在
2000
年,
W3C
接受了一項關于
簡單對象訪問協議
(
SOA
P
)規范的提案。這個規范本來設計用于(并在一些案例替代)專有
RPC
通信。想法是對于在構件間傳輸參數數據可以序列化成
XML
傳送,然后支序列化成其原生格式。
很快,公司及軟件廠商開始看到,對于推進通過構建于專有
-
免費的互聯網通信框架之上的電子商務技術,存在日益巨大的潛力。這最后導致了創建一個純粹的、基于
Web
的分布式技術能充分利用概念標準化的通信框架,來橋接組織之間和組織內部所存在的巨大差異。這個概念被稱為
Web
服務。
Web
服務最重要的部分是其公共接口。它是分配服務識別并使其激活的核心信息塊。因此,首先支持
Web
服務的是
Web
服務描述(
WSDL
)。
W3C
第一份
WSDL
評議提案是在
2001
年,此后還在不斷地修訂這一規范。
為了進一步的開放協同性的愿景,
Web
服務需要一個互聯網友好的、
XML
兼容的通信格式,以便能夠建立一個標準化的通訊框架。盡管有別的選擇,譬如可以考慮
XML-RPC
,但
SOA
P
因為工業界的偏好而勝出,并且保留了最初的通訊標準用于
Web
服務。
為支持
SOA
P
的新角色,
W3C
隨之發布了更新版本的規范,同時考慮了
RPC
風格的與文檔風格的消息類型。而后者在
SOA
里面更為常用。最終,“
SOA
P
”一詞不再代表“簡單對象訪問協議”的首字母縮寫。到了規范的
1.2
版,它變成了一個獨立的術語。
完成第一代
Web
服務標準家族的是
UDDI
規范,它原本由
UDDI.org
所開發,被遞交到
OASIS
之后,它繼續與
UDDI.org
一起合作開發。這個規范考慮在組織內部及組織邊界之外來創建標準化的服務描述的注冊。
UDDI
提供了潛在的對
Web
服務在一個集中的位置注冊,在此處能夠被服務請求者所發現。
WSDL
與
SOA
P
不同,
UDDI
尚未被工業界所普遍接受,并且保留了一個可選的
SOA
擴展。
開發定制的
Web
服務可適應變化的業務需求,并且第三方市場出現了促進各種實用服務的銷售或租賃。現存的通訊平臺,譬如面向消息的中間件(
MOM
)產品,結合
Web
服務可支持
SOA
P
之外的其他消息協議。一些組織可迅速合并
Web
服務,以促進
B2B
數據交換經常要轉變為
EDI
(電子數據交換)替代品的需求。
不久前組織才開始意識到只需要緩和地替代現存的分布式應用,
Web
服務可成為獨立的架構平臺
---
可使用
Web
服務技術集的效益來實現企業中服務概念的平臺。這樣,面向服務架構開始進入
IT
的主流。
在這一點
SOA
頻繁地以不同的方式被分類,經常依賴于構建服務所用的實現技術。早期的模型,主要從
Web
服務標準初始系列中得到靈感,將
SOA
定義為一個圍繞三個基本的構件的架構模型:服務請求者,服務服務提供者與服務注冊(
圖
1
)。
圖
1. SOA
的早期形態
第一代
Web
服務標準實現此模型的以下方面:
-
WSDL
描述服務。
-
SOA
P
提供了用于服務及其請求者的通訊格式。
-
UDDI
提供了標準化的服務注冊格式。
從物理架構的角度,基于
Web
服務的
SOA
第一次變異實際上超越了
原始
SOA
模型。你或許能回憶起原始
SOA
不需要使用服務注冊。作為替代,發現被歸類為當代
SOA
的一個特征,通過面向服務原則在服務層面被提倡。
我們的原始
SOA
模型在今天可輕易獲得,因為它已被所有主要廠商的開發及運行平臺所支持。這些相同廠商都有關于
SOA
的遠大計劃,其中許多現在已經能夠自我證明。
當代
SOA
的諸多特征,大都是過分主動的開發與協作的結果,已經產生了一系列第一代
Web
服務平臺的擴展。知名的“第二代”或“
WS-*
”規范,這些擴展處理特殊的功能區域,
Web
服務技術平臺全面提升至企業水平。
補充
WS-*
領域對于將面向服務概念引入業務分析的世界也很重要。通過面向服務,業務邏輯能夠清晰地被封裝,并從根本的自動化技術中抽象。這個愿景藉由業務流程定義語言的提升而得到進一步支持,最知名的是
WS-BPEL
。這不僅考慮到將傳統的業務流程管理(
BPM
)模型解決成一系列的服務,更進一步提供具體的和可執行的格式充分表達業務邏輯的語言能力,填補了分析與實現間的空隙。
這些及其他工業影響已經擴大了
SOA
的潛在范圍。如同更多的當代特征被增加,也很可能今天我們所歸類的當代
SOA
,會形成未來原始
SOA
的基礎。
SOA
是一個真正的進化。今天的結果明顯是被不同的相關標準組織和軟件廠商主動驅動的結果。通過受協作與競爭的混合刺激的不穩定環境,擴展被作為戰略定位,每個都定義了我們稱為當代
SOA
技術平臺一個特定部分。在第
2
節,我們近距離看看標準的開發過程。
如同任何架構,
SOA
引入了邊界和規則。盡管當代
SOA
可能由
XML
及
Web
服務技術平臺所構成,但這些平臺需要經歷大量的變化,以便其各自的技術被適當定位并在面向服務架構范圍內加以利用。
使用
XML
或
Web
服務的傳統分布式應用環境因此肯定有一些重新實現,面向服務的設計原則需要在技術與心態方面都進行改變。以下是當你必須對現存實現翻工時,你可能面對的一些潛在問題示例。
-
SOA
現在需要數據表達與服務建模標準表達保持一致。這個相當含糊的需求有許多含意,并主要促進內在協同性。
-
SOA
依賴于負責所有服務間通信的
SOA
P
通訊。結果,所有需要
XML
的地方,一般也會有
SOA
P
消息,以照顧傳輸、臨時處理與路由及最終交付。
XML
文檔與關聯的
XSD schema
現在經常需要有意地與
SOA
P
通訊一起建模。
-
SOA
使用標準化的文檔風格的通訊。從
RPC
風格遷移到文檔風格的消息給服務描述的設計強加了變化。特別地,接口特征需要以更普通的術語表示,并全面增加操作粒度。
-
由于強調文檔風格的
SOA
P
消息,
SOA
促進內容及高智能模型。這個支持服務的無狀態及自治,并使消息傳輸的頻度最小化。然而先前的
RPC
風格的方法支持帶有目標數據的小顆粒
XML
文檔傳輸,在
SOA
內的
XML
文檔經常需要代表不止一個數據語境的綁定數據。
-
直到
WS-*
擴展的高階信息能力普遍流行,許多應用都將需要配備
SOA
P
報頭來實現臨時解決方案以管理復雜的消息交換。一些更急迫需求包括管理與關聯。這些臨時的設計有效地建立了轉變模型,需要時可輕易地遷移到工業標準的實現。
要點總結
-
核心
XML
技術集已成為分布式互聯網架構的通用部分。現在也提供基礎數據表達及
SOA
數據管理層。
-
第一代
Web
服務架構來自關鍵標準開發:
WSDL
、
SOA
P
與
UDDI
。然而
UDDI
對于多數據環境而言仍舊是一個可選的發現機制,
WSDL
與
SOA
P
已經成為構建在
XML
層之上定義
SOA
基本通信框架的核心技術。
-
SOA
充分利用
XML
與
Web
服務率先鋪設的道路。它將久經考驗的概念與先進技術的結合,已經被
IT
社團所充分接受。
-
盡管當代
SOA
已經形成并有了對
XML
與
Web
服務的工業級接受度,
SOA
的到來對于已有
XML
及
Web
服務的傳統應用還是帶來了改變。