問題思考
Bill Gates 曾於 1999 年在「數位神經系統」一書中提出 DNA (Distributed Network Architecture) 架構,那麼,又與現今當紅 SOA (Service-Oriented Architecture)架構有何異同?
理念相同
o 業務驅動 IT 技術,科技支援商業。
o 企業間的協同合作,提供即時精確的服務。
簡言之,即為以服務為導向 (service-oriented) 的架構規劃與整合,讓 IT 與 企業合為一體。
作法不同
o DNA 走自家的 COM/COM+ 分散式技術,是屬於 “緊密式耦合 (tight-coupling)” 的連結方式;SOA 則走 Web-Service 的寬鬆連結方式 (loose-coupling)。
o DNA 偏以自家產品 (MS Solution)為中心的整合方式;SOA 則為異質平台的整合方式,依循標準的 HTTP/SOAP, XML 的整合方式。
SOA 的四大特質
o 簡單
o 異質
o 彈性
o 寬鬆連結
- 不同的平台之間 (.NET, J2EE, PHP/Ruby … 等),均可以透過 HTTP/SOAP 協定傳遞 XML 資料 (純文字的格式)。
- 利用 WSDL (Web-service description language) 描述 Web服務 的公佈介面 (interfaces)。這是一個基於 XML格式的標準,以描述如何與 Web服務 通訊和使用的服務。
- 因為是寬鬆連結,最好不要期待 Web-service 可以處理交易機制的協調處理,取用一次,完成所需的服務即可。
- Web-service 的本質就是屬於 “state-less (無狀態)” 的機制,若是應用在 UI 與 Middleware 的系統連結上 (如 .NET Form 透過 web-service 連結 J2EE),需注意用戶端與伺服端的狀態保存與維護。
SOA 的挑戰
o 如何作整體性的架構規劃?
o 如何快速部署 (deploy) Web-service based 的應用程式?
o 如何讓設計比較有彈性,以快速應付外界的需求?
整體性的架構規劃
o 可以利用 UML 使用案例圖 (use case diagram)呈現整體架構設計。
o Use Case 本來就是以需求服務為導向的設計,與 SOA 的標的一致,故用其作為架構設計的呈現,最為適合。
o 每一個由 web-service 所揭露的服務 (service),會對應至一到多個使用案例 (use case)。
快速部署 WebService
o 這是屬於系統廠商的責任,包括 MS, IBM (WebSphere), BEA (Weblogic), TiBCO 等,均能提供快速部署 Web Service 的應用程式。
o 先進的工具還能支援:
o 資料物件與 XML 的格式轉換
o Java Bean to XML (反之亦然)。
o DataSet to XML (反之亦然)。
o Support XML Schema 的設計與定義。
彈性的設計
o 這是屬於 Developer 的責任。
o 這是軟體設計最為嚴謹且為最大挑戰的領域。
o “應變” 是軟體設計者應有的態度。
o 可先以 “分層結構 (後述)” 作為系統開發的 “cook book”,先瞭解與熟悉 “委派(delegate)” 的設計手法。