SOAP協議棧是令人尷尬的失敗?

isoa發表於2008-08-15

關於REST vs. SOAP的爭論已不是什麼新鮮事了。然而,現就職於Sun公司的XML權威Tim Bray近期的一番話再次引發了這一爭論。在OSCON上接受採訪時,Tim Bray說:

目前,SOAP協議棧通常被認為是一個令人尷尬的失敗……SOAP協議棧能做的,REST也能做,而且在可行性、優美性、代價和經濟上更優於前者,只是我們尚缺乏相關工具。

跟以往的情況一樣,雙方的支持者們紛紛出動併發言支援自己所鍾愛的風格。他們在Service-Oriented-Architecture Yahoo!討論組上的辯論已經形成了一個有超過150條回覆的主題。爭論中,Nick Gall給出了一個已拋棄SOAP技術的大公司的案例:

好幾年前,沃爾瑪將其供應鏈的VAN EDI基礎設施替換成為EDIINT AS2,並一直愉快地沿用至今。AS2本質上屬於普通老式XML(Plain Old XML,POX),它用自己的方法實現了可靠訊息傳遞的冪等性。

Mark Baker補充道:

我一直都說SOAP不會在防火牆以外獲得廣泛使用的。

在談到什麼樣的例子才能被算作一個使用SOAP的成功案例時,Nick Gall指出:

實際上我在尋找的,是那些真正利用了SOAP的強大、並有力地證明了“此問題用SOAP可以解決、而用其他技術則面臨困境”的大公司。在我看來,真正需要用SOAP來解決問題的公司並不多——SOAP進入這些公司,要麼是諮詢師將之列入了檢查列表,要麼是因為有些工具預設使用SOAP。大部分應用SOAP的場合似乎只是慣性使然,而不是相信SOAP在完成這件事上存在優勢。

但Eric Newcomer對Nick給出的例子卻不以為然:

你的例子是一個在B2B場景下用REST來替代EDI的客戶。EDI是面向文件的,REST也是,所以這不足為奇。
我知道有很多使用REST的大公司,因為它們主要是面向Web的公司,所以它們設計和建立的是基於Web的資料中心。但我沒聽說過有公司資料中心先於Web就存在了還採用REST的。
……
我是一個主張“為任務採取正確工具”的人,我不認為人人都能從使用REST中得到好處,也不認為人人都能從使用Web服務中得到好處。

另外,Steve Jones對於SOAP因為複雜而不被採用的說法表示不贊同,他說:

我從不選擇複雜的東西。REST並不簡單,它自己有一些非常“好的”方面——但那些並不簡單;而且它還有一些尚未解決的重大難題(比方說安全性)。SOAP並不複雜,人們抱怨SOAP,說它太簡單了、將網路隱藏起來了。所以說,不採用SOAP的原因可能很多,但說它複雜是不妥的。

雖然David Chappell曾斷言“REST與WS-*戰爭結束”,不過顯然,這又是一次關於REST vs. WS-*/SOAP的無休止的辯論。人們都希望這一持久的爭論能有個真正的了斷,不過那不會“由一方取得壓倒性的勝利”。正如John Evdemon所說,

一種方案不可能處處適用——選用最適合你客戶需求的方案,並用它把事情做好。

Gervas Douglas提議對REST和SOAP進行協議棧的比較,以消除雙方在理解上的嚴重不一致。不過,關於參考模型的選取存在不同意見。Steve Jones建議以SOA RM為基礎設計SOA棧,然後拿REST/SOAP對照此棧進行比較;而Mark Baker則主張以OSI參考模型為參照。不管怎樣,反正Gervas Douglas已經為協議棧比較建立好了wiki條目,讓我們拭目以待,看看那裡最終會怎樣。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14780828/viewspace-428181/,如需轉載,請註明出處,否則將追究法律責任。

相關文章