這 10 個 SOA 設計模式是如此之重要,其應用是如此之廣泛,以至于它們都有些顯而易見了。
1. 服務無關
服務無關實作對多種業務通用的邏輯。将服務無關的邏輯分離成離散的服務以友善服務的重用和整合。
原則:複用,服務整合
2. 服務無關的聲明
服務無關的服務應該顯式聲明它們是服務無關的。這樣對于後續的設計者和架構者來說能夠清楚哪些服務是被設計用來進行重複使用的。
原則:複用,服務整合
3. 服務無關的事務
服務無關的服務可以被封裝到具備能夠回退所有行為和改變的復原特性的原子性的事務中。這些由事務管理的服務可以在元件層( 譯者注:SOA 系統總體劃分的三個層次:元件層、系統層、內建層)進行實作,并被多個服務進行複用。
原則:服務無狀态
4. 企業服務總線(ESB)
ESB 在消費者和服務之間扮演着一個消息代理的角色。ESB 能夠進行消息傳輸、路由以及通過不同的通信協定連接配接到各個應用。
原則:高内聚低耦合
5. 服務門面
服務門面處于服務和契約之間。它消除了服務及其契約之間的緊密的耦合性。這樣做的目的是在更換契約的時候對服務的更改程度能夠降到最低。一個服務可以擁有多個服務門面以支援多個契約。
原則:松耦合
6. 服務回調
服務要求它的消費者通過異步的方式對其進行調用。如果消費者需要一個響應,它将提供一個回調位址。在服務處理消費者的請求到了某個階段的時候,它将對消費者進行消息響應。這種辦法大大釋放了伺服器的資源,尤其是服務将要進行長時間執行的場景。
原則:松耦合
7. 多個服務契約
一個服務可能會同時支援多個契約。這樣做可以支援向後相容(這樣當改變一個服務的時候,所有的消費者不必随着進行更新)。這樣做還能夠為不同的目的來為同一服務提供不同的視圖(也達到了重用的目的)。
原則:複用,松耦合
8. 認證代理
認證代理為消費者認證承擔責任。消費者通過使用 token 來對服務進行通路。
9. 消息來源認證
通過數字證書來對用戶端進行認證。
原則:服務整合
10. 消息過濾
在對消息進行處理之前先過濾掉有害資料。
原則:标準服務契約
原文連結:10 Soa Design Patterns Every Architect Should Know,釋出日期:2010 年 9 月 7 日。
作者簡介:Anna Mar 是一名擁有 18 年以上金融領域經驗的首席架構師。