服務導向模糊性
2005 年 7 月 1 日
每當 Thoughtworks 冒然讓我出現在客戶面前時,我一定會被問到一個問題:「你如何看待 SOA(服務導向架構)?」這個問題幾乎不可能回答,因為 SOA 對不同的人來說有不同的意義。
- 對有些人來說,SOA 是透過網路服務公開軟體。這個群體進一步細分為那些期待各種 WS-* 標準的人,以及那些願意接受任何形式的 XML over http(甚至可能不是 XML)的人。
- 對有些人來說,SOA 意味著一種應用程式消失的架構。取而代之的是提供業務功能和資料的核心服務,由 UI 聚合器分隔,這些聚合器套用展示,將核心服務提供的東西聚合在一起。
- 對有些人來說,SOA 是關於允許系統透過某種形式的標準結構(通常基於 XML)與其他應用程式進行通訊。在最糟糕的情況下,這是「帶有尖括號的 CORBA」。在更精密的型態中,這涉及為組織想出某種形式的標準主幹,並讓應用程式與此主幹配合使用。此主幹可能涉及或不涉及 http。
- 對有些人來說,SOA 的重點在於使用(主要是)非同步訊息傳遞在不同系統之間傳輸文件。這基本上是 EAI,沒有所有昂貴的 EAI 供應商將你鎖定。
我聽過有人說 SOA 的好處是它將資料與流程分開,它結合了資料和流程,它使用網路標準,它獨立於網路標準,它是非同步的,它是同步的,同步性並不重要....
幾年前,我參加了 Microsoft PDC。我坐了一整天的 SOA 簡報,最後我在 SOA 小組中。我開玩笑地問,是否還有其他人了解 SOA 到底是什麼。之後,有人評論說,這種模糊性也發生在物件導向中。這有一定道理,對於 OO 的意義有一些不同的觀點(而且現在仍然如此)。但是,物件模糊性遠低於服務導向模糊性。
那麼我們該怎麼辦?首先,我們必須隨時記住,有多少不同的(而且大多不相容的)想法屬於 SOA 陣營。這些想法確實需要適當地描述(並命名),且獨立於 SOA。我認為 SOA 已經變成一個沒有語義的概念,可以加入「元件」和「架構」。它已經無法挽救了,因此確實有一些實質內容的具體想法需要獲得獨立的生命。