SOA
SOA 是通過功能元件化、服務化,來實現系統整合、解決資訊孤島,這是其主要目標。而更進一步則是實現更快響應業務的變化、更快推出新的應用系統。與此同時,SOA 還實現了整合資源,資源複用。
SOA 服務的設計標準是粗粒度、高重用、靈活、標準。效能則並非首要考慮因素。
SOA 的兩大功能是整合、服務編排(BPEL、BPM)。WF 在 SOA 架構中,實現服務編排的功能。
參考架構:
相關資源:
ESB
ESB 是 SOA 的重要實現手段。ESB 實現 SOA 時,它作為中心、媒介,整合的系統將只與它進行互動。而 ESB 實現與各種系統間的協議轉換、資料轉換、透明的動態路由功能(基於內容)。
在設計 ESB 時,集中的分發模組會影響效能、可伸縮性、容錯能力,所以 ESB 要有良好的可伸縮性,支援叢集。
IBM 總結了 ESB 的功能,較完整的功能如下:
通訊 | 服務互動 |
|
|
整合 | 服務質量 |
|
|
安全性 | 服務級別 |
|
|
訊息處理 | 管理和自治 |
|
|
建模 | 基礎架構智慧 |
|
|
而最低要求的 ESB 需要具有的功能:
通訊 | 整合 |
|
|
服務互動 | |
|
相關資源:
NServiceBus
NServiceBus 是 .NET 平臺上最受歡迎的一個開源 ESB 框架。有較完善的文件及示例程式碼。
目前,.NET 平臺上開源的 ESB 框架,大多基於訊息佇列來實現。NServiceBus 同樣也使用訊息佇列機制來實現訊息的傳遞,例如可以使用 MSMQ。由於訊息佇列天生就是非同步傳輸的,所以 NSB 也同樣只支援非同步訊息,是一種‘傳送即忘卻’的模式。(As a general purpose communications technology, WCF does not enforce the queued messaging paradigm. NServiceBus does, and the architectural implications are profound.)。
NServiceBus 相對於 WCF 的優勢在於:事件驅動的架構(釋出、訂閱)、更好地支援長時間執行的工作流。
缺點一:只支援非同步的訊息機制的問題是,無法進行傳統的的資料查詢。(To allow clients to perform queries, it is best not to use NServiceBus. Messaging is designed for non-blocking operations, and queries are (for the most part) operations for which the user wishes to wait.)
如果一定要使用 NSB 來實現資料查詢,那麼只能通過 CQRS 來進行系統的設計:
缺點二:NSB 的服務可以輕易整合到 WCF 中使用 MSMQ 實現,但是反之則不行。也就是說,已經使用 WCF 開發的服務,是無法使用 NSB 來完成簡單的遷移的。(原因也主要是因為 NSB 的非同步機制。)
相關資源:
infoq 官方採訪介紹:NServiceBus——讓建立企業級.NET系統更加容易
NServiceBus---最流行的開源企業服務匯流排 for .Net
雲端計算,及與 SOA 的關係
雲端計算是一種部署體系結構,而 SOA 則是企業 IT 的體系結構。
SOA與雲整合既帶來應用和業務流程靈活的虛擬化和節省的費用(雲),又帶來原有應用的整合應用及業務流程的敏捷重構(SOA)。
上層基於 SOA 進行應用服務的開發,底層基於雲端計算進行資源整合,包括儲存,網路,資料庫,伺服器等。
目前業界比較多的觀點贊同:SOA 與雲端計算將整合發展。
它們的關係:
- 從產生的背景和原因看,SOA產生的原因是為解決企業存在的資訊孤島和遺留系統這兩大問題。雲端計算產生的原因是企業的資訊系統資料量的高速增長與資料處理能力的相對不足,還有計算資源的利用率處於不平衡的狀態。
- 從關鍵的技術和屬性看,通過產生背景和原因的分析,SOA和雲端計算是不同的概念,但是它們卻互相聯絡,又有一定的相似性。從服務角度來看,SOA實現了可以從多個服務提供商得到多個服務(一個服務便是一個功能模組),並通過不同的組合機制形成自己所需的一個服務;雲端計算實現了所有的資源都是服務,可以從雲端計算提供商購買硬體服務、平臺服務、軟體服務等,把購買的資源作為雲端計算提供商提供的一種服務。
- 從關鍵技術來看,SOA需要實現業務元件的可重用性、敏捷性、適應改變、鬆耦合、基於標準;雲端計算則需要虛擬化技術、按需動態擴充套件、資源即服務的支撐。
- 從應用場景來看,當企業的業務需求經常改變的時候可以考慮使用SOA;當企業對IT設施的需求經常改變或者無法提前預知的時候可以考慮使用雲端計算,當有大量的批處理計算的時候也可以考慮使用雲端計算。
- 從應用的側重點來看,SOA側重於採用服務的架構進行系統的設計,關注如何處理服務;雲端計算側重於服務的提供和使用,關注如何提供服務。
- 從商業模式來看,SOA可能會降低軟體的開發及維護的成本,商業模式是間接的,需要落地;雲端計算根據使用的時間(硬體)或流量(頻寬)進行收費,具有明確的商業模式。
下面列出最近看的與本文相關的一些 pdf 書籍,東西太多,不上傳了,列下書名:
《中國SOA最佳應用及雲端計算融合實踐》、《SOA in the Real World》、《SOA應用案例分析及設計》、《A Developer’s Guide to the Microsoft .NET Service Bus》、《IBM ESB概要設計說明書@CBOD》、《Mule+ESB+Studio+v3.3安裝使用手冊》、《軟通動力 蘭州ESB平臺專案詳細設計說明書》、《SOA實踐者指南》、《基於.NET+Framework+WCF的面向服務SOA中介軟體設計》、《基於WCF的SOA框架設計》、《IBM-ESB 在 SOA 內的工作角色》、《WSSF(服務工廠)架構剖析》、《開源SOA快速入門指南》、《Composite Software Construction》、《Enterprise Integration Patterns - Designing Building and Deploying Messaging Solutions》、《Enterprise SOA Adoption Strategies》、《Prentice.Hall.SOA.with.NET.and.Windows.Azure.May.2010》。
其它: