瞭解不同的服務導向架構 (SOA) 反模式,這些反模式對通常出現的會產生確定性負面結果的情形或解決方案進行了描述。隨著越來越多的企業開始大舉從 Web 服務轉向 SOA,引入、採用和成功實現 SOA 方面的各種障礙變得越來越明顯。其中一些障礙與導致過去的關鍵活動失敗的因素類似;而其他障礙則是 SOA 特有的。對這些障礙和最差實踐進行記錄,將協助顧問、架構師和專業人員不再犯同樣的錯誤,並學習如何避免這些問題的發生。此處彙集和說明的反模式是由作者通過作為 IBM 架構師的個人經驗、研究過去和當前的 SOA 應用案例以及通過分析那些參與客戶 SOA 應用的技術先驅提供的資訊而得到的。
模式與反模式
“樣本不是另一種學習的方法,而是學習的唯一方法。”——阿爾貝特•愛因斯坦
模式和模式語言捕獲並正式地將良好設計和基於經驗的最佳實務系統化,以供其他人員對其進行重用。它們成功而清楚地表述了常見問題及其解決方案。總的來說,常見概念、描述這些概念的詞彙以及將其聯絡在一起的語言是所有採用這些設計和實踐的學科和領域的基礎。
Christopher Alexander 關於建築物和城市設計的研究通常被認為是基於模式的思維最早的成果(請參閱參考資料)。他提出了術語“模式語言”,以此代表他認為人類進行設計的能力和使用語言的能力都是天生的這一信念。
很多學科都在使用模式和模式語言的概念,包括從生理學和流程到專案管理和軟體工程等領域。在 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(經常將他們稱為 Gang of Four)的“Design Patterns: Elements of Reusable Object-Oriented Software”一書出版後,軟體設計模式得到了廣泛的認可和使用。
軟體社區目前正使用模式來解決在軟體生命週期中遇到的不斷重複的問題,包括軟體體繫結構和設計,以及近來的軟體開發流程和拓撲。這些模式全面捕獲了一個知識體系,以標識我們對可以實現設計良好的軟體解決方案的結構和機制的理解。
模式經常被定義為“泛型化的、命名的問題到解決方案的映射”。它捕獲在特定環境中重複出現的問題的成功解決方案。
通常使用與表 1“模式模板”中描述的模板類似的模板來記錄軟體模式。
表 1. 模式模板
| 內容 |
說明 |
| 名稱: |
用於進行標識的名稱 |
| 問題: |
在領域中重複出現的問題 |
| 解決方案: |
該問題的最佳實務解決方案 |
| 結果: |
所建議的解決方案的優點和缺點 |
| 樣本 |
一些已經應用了所建議的解決方案的樣本 |