我們公司在介紹服務導向架構 (Service-Oriented Architecture; SOA) 時,一張用來開宗明義破題的投影片,上面說道:
SOA 是一種架構面的方法論,用來產生鬆散耦合、互通的業務服務,這些服務可輕易地在企業內和跨企業間共享並重複利用
對於不同職務和階層的聽眾而言,算是個不錯的概述。對於編寫程式、設計架構的技術人員而言,我們有另一張頗耐人尋味的比較表,如下圖:

前幾天研究美國軍方近年來對 SOA 大力倡導的情形時,碰巧讀到一篇學術論文(其 中第二作者從名字看來姓蔡,像是台灣的拼法),其中有段針對 SOC (Service-Oriented Computing) 和 OOC (Object-Oriented Computing) 的比較,相當值得技術人員玩味(儘管我並不全然贊同作者對 SOC 和 OOC 的觀點)。在第三頁中,作者寫道:
儘管 SOC 從 OOC 演化而來,但 SOC 與 OOC 有根本上的差異。SOC 或許在幾個面像上看起來與 OOC 類似,但其實它是個不同的運算典範 (paradigm)。在過去,有些人誤以為 OOC 和結構化程序式運算 (procedural computing) 沒多大差別,因為許多結構化程序語言[例如 C]已經具備資料抽象化和程序呼叫的概念。這些人並未體認到,儘管 OOC 在許多地方看起來,或許和程序式運算相似,但設計師採用類別和物件的觀念來思索,已徹底改變了思考的方式。從 OOC 衍生出許多新的概念,例如 UML、design patterns, object composition、dynamic binding,和 design architecture。
同樣地,SOC 與 OOC 有著根本上的不同,因為設計師現在用服務、執行期服務探尋和組合、執行期系統重新組裝,以及執行期系統確認和證實。這些和 OOC 的概念不同。
此外,服務可以從線上取得和叫用。用戶或一個軟體 agent 可以透過執行期的搜尋,來找尋新的服務。用戶不見得需要購買和安裝,而只要呼叫和使用遠端的服務。Software upgrade will become easier because once the service is upgraded, the new service will immediately replace all the old versions instantly, saving significant cost of un-installing and re-installing software.
最後一句我刻意保留原文不翻譯,這段我不太茍同他們的看法。