隨著Web 2.0襲捲而起的新浪潮,將軟體變成網站服務的風潮方興未艾。利用Web作為軟體運作平臺與服務,是Web 2.0時代一個鮮明的特色,因此也產生了WOA(Web Oriented Architecture,Web導向架構)這個新詞,用來描述這種現象。

WOA是SOA的子集合
2005年年底,IT研究機構Gartner發布了一個縮寫字WOA,定義它屬於SOA(Service Oriented Architecture,服務導向架構)的一個子集,並可以簡單的用「WOA = SOA + WWW + REST」這樣的算式來說明。

提出這個詞的Nick Gall認為,之所以必須新鑄詞彙,從SOA中切割出一塊新領域,在於SOA導入方法很多,而WOA代表一種完全倚賴Web的形式。

在Gartner的部落格上,副總裁Whit Andrew解釋使用WOA一詞,事實上也意味著企業在系統上的需求,不總是事事要做到十足的穩固、可靠與嚴密,有時快速、輕簡如WOA,即足以符合企業特定的需求。
WOA專指透過WWW(Word Wide Web)這個媒介和REST(Representational State Transfer,表徵狀態移轉)架構作為SOA的執行方式,REST簡單而言,是一種寬鬆、簡單協定,藉由HTTP管道傳送資料,而無須額外的訊息層,像是SOA使用的SOAP協定。


WOA是SOA的一個子集合,經常採用REST、JSON(JavaScript Object Notation)和POX(Plain Old XML)等較簡易方式,混搭應用程式與資料,在開發或使用上,都有快速便捷的特性。


WOA更容易實現服務導架構
SOA高舉服務導向旗幟,將應用程式及資源以可重複使用的服務方式呈現,藉此提供更高彈性和效率的資訊整合環境。不過SOA原本就是為大型企業量身訂作的龐大架構,將複雜的系統整合視為首要任務,因此必須構思宏大,實作嚴謹。

導入SOA因此變得茲事體大,企業不是望之卻步,便是心存觀望,希望有較多的成功典範出現之後,再考慮跟進。然而同樣以服務導向為概念,WOA卻能更快速的實現服務導向為核心、分散式、分享式的架構。

看看幾個WOA的典型案例,Salesforce在網站上提供的客戶關係管理,並有開放式API可以整合其他應用程式,或像Google Map提供API讓使用者可以自行在上面開發應用。此外如Amazon也提供許多API可以使用網站中的資料。甚至像是部落格中使用的RSS通知或引用功能,都是一種以網站為開發規模、透過HTTP的特性交換資料或提供服務的WOA實踐。

REST源於設計模式概念
SOA和WOA在概念上一個鮮明的差異在於WOA擁抱REST。從Gartner扼要的定義「WOA = SOA + WWW + REST」中不難發現,WWW和REST均是WOA的核心元素。

WWW從1991年公開以來已經成為我們熟知的一部分,而REST則是相較陌生的詞彙。REST是2000年Roy Fielding(制定HTTP協定規格的主要成員之一)在他的博士論文中提出的一種設計模式,用來描述良好的Web應用程式應該如何運作。簡單而言,使用者可以利用包含有超連結的網頁來操作應用程式,而應用程式狀態(state)的改變結果,會以另一個頁面呈現。

就Roy Fielding的定義來說,用戶端使用URL指定一個Web資源,而一個資源的表徵(Representation)被送回給用戶端(例如一個網頁),這個表徵讓用戶端保持在新的狀態,當用戶端選擇包含在網頁中的一個超連結時,它就等於存取了另一個新的資源,而這個新資源傳送給使用者後,則讓使用者又處在新的狀態中。因此用戶端應用程式得以透過每個資源的表徵,以傳送新的狀態。

REST的運作方式看起來就像目前WWW的運作方式,然而仔細檢視,目前許多Web應用程式是用一連串參數的方式來表達網頁的資源,而且為了提供豐富的個人化功能,也讓伺服器端保留使用狀態,這些作法都違反REST的設計方式。

隨著Web 2.0的盛行,REST的設計方法再度被重視,像是最近推出1.2版的Ruby on Rails的重點之一便是更全面地支援REST。此外,Ajax技術崛起,也解決一部分個人化的問題,透過非同步的傳輸技術,提供更豐富的使用者介面,而且許多工作可以在用戶端處理,無須伺服器以保留狀態的方式介入。


在訂位系統中,上圖非REST架構的會員不分等級,都必須進入同一個介面,讀取會員身分,判斷等級之後,才分派不同的資源。而以REST做法而言,應像下圖提供每種會員一個管道去存取對應的資源,因為每一種資源都應該要有唯一的URL做為識別之用。


REST介面簡單,易於混搭
REST除了是一種設計模式,更多的時候,Web 2.0的開發人員是將REST視為一種進行混搭服務時的輕巧介面,並經常被用來和SOAP作為比較。

REST雖然不一定採用HTTP作為溝通的語彙,即使用SOAP、RPC等方式,也能實作出符合Roy Fielding定義的模式,然而被視為SOA原生協定的SOAP由於過於複雜,對於WOA力走輕裝便捷的概念並不相符,因此HTTP的方式就成了今日REST在建立Web服務的不二選擇。

HTTP提供簡單的運作方式,也可以說,HTTP提供一組API,透過GET、PUT、POST、DELETE等語彙,來建立檢視、新增、修改、刪除等動作,善用這些語法,Web的服務就能相互溝通。

因此透過REST風格的設計,使用者只需知道HTTP這個具有普及性、延展性的通訊協定,以及利用XML、JSON等儲存資料和狀態即可使用。而SOAP在使用上便相對複雜,如果沒有依照相同的Web服務的標準與堆疊,就無法進行溝通,讓雙向互動難以進行。這也是簡單、直觀的REST之所以能勝出的原因。

WOA並非萬靈丹,卻是快速實現SOA的方法
WOA讓網站成為服務平臺、透過平臺間混搭程式與資料,可以成為一個相當規模的供應鏈體系,這是過去以網站為獨立單位所無法想像的事,而WOA讓SOA大夢得以落實與普及。

然而企業在思考SOA與WOA時,必須要正視的一個事實,那便是WOA並非萬靈丹。一旦系統架構要求穩固,或者系統複雜時,WOA就顯得無以為繼,這時就只有SOA提供的技術與架構,可以提供妥善的解決方案。

不過如果SOAP的複雜協定,無益於企業的應用系統,那麼企業大可拋掉,透過簡易的REST架構,擁抱開發快速、互動容易的WOA。文⊙黃天賜

熱門新聞

Advertisement