29/06/2006

SOA 之原則、設計與實務

這是我在 JavaTwo 2006 上的講題。選定 SOA (Service-Oriented Architecture, 服務導向架構) 為主題,一方面是因為自己感興趣,另一方面也是因為 Browser 希望能在 JavaTwo 中多增加一點 JavaEE 的場次,尤其是與 SOA 或 JBI 有關的。

考量 SOA 在台灣的發展,多是由資訊大廠所推動,這導致兩個現象:1. 其目標聽眾,大抵為企業資訊決策高階主管;2. 以資訊大廠之產品作為 SOA 應用之主軸。考量 JavaTwo 之與會者,多為系統開發人員,是捲起袖子來幹的一群人,因此我將捨棄 SOA 之業務觀點,直接從系統之架構與設計出發。

由於 SOA 強調的是模組、系統間的組裝與互動,這跟物件導向所著重的,對物件行為進行精密的控制,在出發點上有些不同,這也導致在設計原則上的差異。例如,物件導向強調物件應具有屬性與行為,但是 SOA 裡面,則強調資料與服務實作的分離。

而在設計上,由於 SOA 從架構出發,其中當然就涵括了不少設計樣式,像是 Bridge、Adapter、DAO、Registry 等。透過研究 SOA,我們亦可從中觀察到這些樣式間如何彼此合作,完成更大的服務體系。

在實務上,目前 SOA 的解決方案基本上可分為兩種型式,一種是透過 Bridge/Adapter 轉接,另一種則試圖像 DCOM 一樣,定義一套共通的分散式通信協定。前者以 ESB/JBI 為代表,而後者則為 SCA/SDO。

由於 ESB 之實作通常提供了許多連接到異質資訊系統的配接器,加上它通常會配合一套 Service Registry,因此它挺適合用於統整企業內分離的資訊系統。而 SCA (Service Component Architecture) 則因統一並簡化了分散式系統的開發方式,因此相當適合用於客製化專案或商業產品的開發,另外,SCA 也很適合作為兩個企業間或兩套系統間的溝通方式。我希望能為這兩種方案各提供一個例子。

看來要講的內容有點多,我得多加注意時間的掌控才行。

12:09 發表於 Developing | 永久網址 | 留言 (1) | Email this | Tags: java, JavaTwo, SOA, JBI, SCA, ESB, SDO