出版信息,內容簡介,目錄,
出版信息
SOA架構:服務和微服務分析及設計(原書第2版)
SOA架構:服務和微服務分析及設計(原書第2) |
作者:[加] 托馬斯·埃爾(Thomas Erl) 著 |
ISBN(書號):978-7-111-58261-8 |
叢書名:架構師書庫 |
出版日期:2017-11 |
版次:1/1 |
開本:16 |
內容簡介
本書是IT作家Thomas Erl的新作,上一版曾獲Jolt大獎提名,是面向服務和服務技術領域的一本圖書。本升級版反映了SOA技術的新實踐、新技術和新策略,並引進了微服務和微任務作為SOA架構及其相關服務層的一部分。
全書共分三部分,10章。第1章和第2章分別是概述內容及案例研究背景信息。第一部分(第3~5章)是基本原理部分,其中第3章詳細介紹了面向服務設計範式,包括其設計理念和設計原理以及與傳統豎井式設計方法的比較;第4章深入探討了面向服務架構的獨有特徵和類型,並進一步探討了面向服務套用設計範式與技術架構套用之間的聯繫;第5章講述了新版的標準服務模型和相應的服務層,並簡要提到了與微服務實現要求相關的服務部署包和容器化的相關性。第二部分(第6~10章)講解面向服務的分析和設計,其中第6章使用案例研究更新並逐步涵蓋Web服務的面向服務分析過程;第7章探討基於REST服務的面向服務分析過程,該過程隨著微服務的併入而進行了修訂;第8章講解了Web服務指南和服務契約設計注意事項以及擴展的案例研究;第9章介紹了將微服務添加到服務模型特定的REST契約設計中,並提供了設計提南;第10章講述了一系列Web服務和REST服務契約與API基本的版本控制及注意事項。第三部分為附錄部分,提供了書中引用的面向服務設計原則、REST設計約束和SOA設計模式的簡述表,以及完整的注釋版SOA聲明。
全書共分三部分,10章。第1章和第2章分別是概述內容及案例研究背景信息。第一部分(第3~5章)是基本原理部分,其中第3章詳細介紹了面向服務設計範式,包括其設計理念和設計原理以及與傳統豎井式設計方法的比較;第4章深入探討了面向服務架構的獨有特徵和類型,並進一步探討了面向服務套用設計範式與技術架構套用之間的聯繫;第5章講述了新版的標準服務模型和相應的服務層,並簡要提到了與微服務實現要求相關的服務部署包和容器化的相關性。第二部分(第6~10章)講解面向服務的分析和設計,其中第6章使用案例研究更新並逐步涵蓋Web服務的面向服務分析過程;第7章探討基於REST服務的面向服務分析過程,該過程隨著微服務的併入而進行了修訂;第8章講解了Web服務指南和服務契約設計注意事項以及擴展的案例研究;第9章介紹了將微服務添加到服務模型特定的REST契約設計中,並提供了設計提南;第10章講述了一系列Web服務和REST服務契約與API基本的版本控制及注意事項。第三部分為附錄部分,提供了書中引用的面向服務設計原則、REST設計約束和SOA設計模式的簡述表,以及完整的注釋版SOA聲明。
目錄
譯者序
致謝
第1章 概述 …… 1
1.1 本書中如何使用模式 …… 2
1.2 涵蓋第1版主題的系列書籍 …… 2
1.3 本書的組織形式 …… 3
1.4 原則、約束條件和設計模式 …… 4
1.5 附加信息 …… 5
第2章 案例研究背景知識 …… 7
2.1 如何套用案例研究 …… 7
2.2 案例研究背景1:Transit Line Systems, Inc. …… 7
2.3 案例研究背景2:Midwest University Association …… 7
第一部分 基本原理
第3章 理解面向服務 …… 10
3.1 面向服務簡介 …… 10
3.1.1 業務自動化中的服務 …… 11
3.1.2 服務是能力的集合 …… 12
3.1.3 面向服務是一種設計範式 …… 13
3.1.4 面向服務的設計原則 …… 15
3.2 面向服務所解決的問題 …… 16
3.2.1 豎井式套用架構 …… 16
3.2.2 大量的浪費 …… 18
3.2.3 缺乏效率 …… 18
3.2.4 企業膨脹 …… 19
3.2.5 產生複雜的基礎設施和錯綜複雜的企業架構 …… 19
3.2.6 系統間集成成為永恆的挑戰 …… 20
3.2.7 面向服務的需求 …… 20
3.2.8 增加大量可復用解決方案邏輯 …… 21
3.2.9 削減套用個性化業務邏輯 …… 21
3.2.10 削減業務邏輯的總量 …… 22
3.2.11 本徵互操作性 …… 22
3.3 面向服務對企業的影響 …… 23
3.3.1 面向服務和“套用”的概念 …… 23
3.3.2 面向服務和“集成”的概念 …… 24
3.3.3 服務組合 …… 25
3.4 面向服務計算的目的和優勢 …… 26
3.4.1 增強本徵互操作性 …… 27
3.4.2 增強聯合 …… 28
3.4.3 增加供應商多元化選擇 …… 29
3.4.4 同步提升業務與技術領域 …… 30
3.4.5 提高投資回報率 …… 31
3.4.6 提高組織的業務敏捷性 …… 32
3.4.7 減少IT成本 …… 34
3.5 面向服務的4個支撐點 …… 34
3.5.1 團隊合作 …… 36
3.5.2 教育 …… 36
3.5.3 紀律 …… 36
3.5.4 平衡範圍 …… 37
第4章 理解面向服務架構 …… 39
4.1 SOA的4個特性 …… 40
4.1.1 業務驅動 …… 40
4.1.2 供應商中立 …… 41
4.1.3 企業中心化 …… 42
4.1.4 組合中心化 …… 44
4.1.5 設計優先權 …… 45
4.2 SOA的4種常見類型 …… 46
4.2.1 服務架構 …… 47
4.2.2 服務組合架構 …… 50
4.2.3 服務目錄架構 …… 55
4.2.4 面向服務的企業架構 …… 58
4.3 面向服務和SOA的最終結果 …… 58
4.4 SOA項目和生命周期 …… 60
4.4.1 方法論和項目交付的策略 …… 62
4.4.2 SOA項目階段 …… 62
4.4.3 SOA項目採用的計畫 …… 65
4.4.4 服務目錄分析 …… 65
4.4.5 面向服務分析 (服務建模) …… 66
4.4.6 面向服務設計(服務契約) …… 68
致謝
第1章 概述 …… 1
1.1 本書中如何使用模式 …… 2
1.2 涵蓋第1版主題的系列書籍 …… 2
1.3 本書的組織形式 …… 3
1.4 原則、約束條件和設計模式 …… 4
1.5 附加信息 …… 5
第2章 案例研究背景知識 …… 7
2.1 如何套用案例研究 …… 7
2.2 案例研究背景1:Transit Line Systems, Inc. …… 7
2.3 案例研究背景2:Midwest University Association …… 7
第一部分 基本原理
第3章 理解面向服務 …… 10
3.1 面向服務簡介 …… 10
3.1.1 業務自動化中的服務 …… 11
3.1.2 服務是能力的集合 …… 12
3.1.3 面向服務是一種設計範式 …… 13
3.1.4 面向服務的設計原則 …… 15
3.2 面向服務所解決的問題 …… 16
3.2.1 豎井式套用架構 …… 16
3.2.2 大量的浪費 …… 18
3.2.3 缺乏效率 …… 18
3.2.4 企業膨脹 …… 19
3.2.5 產生複雜的基礎設施和錯綜複雜的企業架構 …… 19
3.2.6 系統間集成成為永恆的挑戰 …… 20
3.2.7 面向服務的需求 …… 20
3.2.8 增加大量可復用解決方案邏輯 …… 21
3.2.9 削減套用個性化業務邏輯 …… 21
3.2.10 削減業務邏輯的總量 …… 22
3.2.11 本徵互操作性 …… 22
3.3 面向服務對企業的影響 …… 23
3.3.1 面向服務和“套用”的概念 …… 23
3.3.2 面向服務和“集成”的概念 …… 24
3.3.3 服務組合 …… 25
3.4 面向服務計算的目的和優勢 …… 26
3.4.1 增強本徵互操作性 …… 27
3.4.2 增強聯合 …… 28
3.4.3 增加供應商多元化選擇 …… 29
3.4.4 同步提升業務與技術領域 …… 30
3.4.5 提高投資回報率 …… 31
3.4.6 提高組織的業務敏捷性 …… 32
3.4.7 減少IT成本 …… 34
3.5 面向服務的4個支撐點 …… 34
3.5.1 團隊合作 …… 36
3.5.2 教育 …… 36
3.5.3 紀律 …… 36
3.5.4 平衡範圍 …… 37
第4章 理解面向服務架構 …… 39
4.1 SOA的4個特性 …… 40
4.1.1 業務驅動 …… 40
4.1.2 供應商中立 …… 41
4.1.3 企業中心化 …… 42
4.1.4 組合中心化 …… 44
4.1.5 設計優先權 …… 45
4.2 SOA的4種常見類型 …… 46
4.2.1 服務架構 …… 47
4.2.2 服務組合架構 …… 50
4.2.3 服務目錄架構 …… 55
4.2.4 面向服務的企業架構 …… 58
4.3 面向服務和SOA的最終結果 …… 58
4.4 SOA項目和生命周期 …… 60
4.4.1 方法論和項目交付的策略 …… 62
4.4.2 SOA項目階段 …… 62
4.4.3 SOA項目採用的計畫 …… 65
4.4.4 服務目錄分析 …… 65
4.4.5 面向服務分析 (服務建模) …… 66
4.4.6 面向服務設計(服務契約) …… 68
4.4.7 服務邏輯設計 …… 69
4.4.8 服務開發 …… 69
4.4.9 服務測試 …… 69
4.4.10 服務部署和維護 …… 71
4.4.11 服務使用和監控 …… 71
4.4.12 服務發現 …… 72
4.4.13 服務版本控制和退役 …… 72
4.4.14 項目階段和組織角色 …… 72
第5章 理解服務與微服務的層次 …… 74
5.1 服務層次簡介 …… 74
5.1.1 服務模型和服務層次 …… 74
5.1.2 服務和候選服務能力 …… 76
5.2 分解業務問題 …… 76
5.2.1 功能分解 …… 76
5.2.2 服務封裝 …… 76
5.2.3 不可知上下文 …… 76
5.2.4 不可知能力 …… 79
5.2.5 功能抽象 …… 79
5.2.6 實體抽象 …… 80
5.2.7 非不可知上下文 …… 80
5.2.8 微任務抽象和微服務 …… 81
5.2.9 流程抽象和任務服務 …… 81
5.3 構建面向服務的解決方案 …… 84
5.3.1 面向服務和服務組合 …… 84
5.3.2 能力組合和能力再組合 …… 84
5.3.3 邏輯集中與服務規範化 …… 90
第二部分 面向服務的分析與設計
第6章 Web服務及微服務的分析與建模 …… 94
6.1 Web服務建模過程 …… 94
6.1.1 步驟1:分解業務流程(使之成為細粒度操作) …… 95
6.1.2 步驟2:過濾不適操作 …… 98
6.1.3 步驟3:定義候選實體服務 …… 99
6.1.4 步驟4:識別特定流程邏輯 …… 101
6.1.5 步驟5:套用面向服務 …… 102
6.1.6 步驟6:識別候選服務組合 …… 102
6.1.7 步驟7:分析處理需求 …… 103
6.1.8 步驟8:定義候選公共服務 …… 104
6.1.9 步驟9:定義候選微服務 …… 105
6.1.10 步驟10:套用面向服務 …… 106
6.1.11 步驟11:修訂候選服務組合 …… 106
6.1.12 步驟12:修訂候選能力分組 …… 106
第7章 REST服務及微服務的分析與建模 …… 107
7.1 REST服務建模過程 …… 107
7.1.1 步驟1:分解業務流程(使之成為細粒度操作) …… 109
7.1.2 步驟2:濾掉不適操作 …… 109
7.1.3 步驟3:定義候選實體服務 …… 110
7.1.4 步驟4:識別特定流程邏輯 …… 112
7.1.5 步驟5:識別資源 …… 113
7.1.6 步驟6:將服務能力與資源和方法相關聯 …… 114
7.1.7 步驟7:套用面向服務 …… 116
7.1.8 步驟8:識別候選服務組合 …… 117
7.1.9 步驟9:分析處理需求 …… 118
7.1.10 步驟10:定義候選公共服務(並且關聯資源和方法) …… 119
7.1.11 步驟11:定義候選微服務(並且關聯資源和方法) …… 121
7.1.12 步驟12:套用面向服務 …… 121
7.1.13 步驟13:修訂候選服務組合 …… 121
7.1.14 步驟14:修改資源定義和候選能力分組 …… 122
7.2 附加因素 …… 123
7.2.1 統一契約建模和REST服務目錄建模 …… 123
7.2.2 REST約束條件和統一契約建模 …… 125
7.2.3 REST服務能力粒度 …… 125
7.2.4 資源與實體 …… 126
第8章 Web服務的服務API與契約設計 …… 128
8.1 服務模型設計關注點 …… 129
8.1.1 實體服務設計 …… 129
8.1.2 公共服務設計 …… 130
8.1.3 微服務設計 …… 131
8.1.4 任務服務設計 …… 131
8.2 Web服務設計指南 …… 140
8.2.1 套用命名標準 …… 140
8.2.2 套用合適的服務契約API粒度 …… 141
8.2.3 將Web服務的操作設計成原生可擴展的 …… 143
8.2.4 考慮採用模組化WSDL文檔 …… 143
8.2.5 慎用命名空間 …… 144
8.2.6 使用SOAP文檔和Literal屬性值 …… 145
第9章 REST服務及微服務的服務API與契約設計 …… 147
9.1 服務模型設計關注點 …… 147
9.1.1 實體服務設計 …… 148
9.1.2 公共服務設計 …… 148
9.1.3 微服務設計 …… 149
9.1.4 任務服務設計 …… 150
9.2 REST服務設計指南 …… 155
9.2.1 統一服務契約設計關注點 …… 155
9.2.2 設計和標準化方法 …… 155
9.2.3 設計和標準化HTTP報頭 …… 157
9.2.4 設計和標準化HTTP回響碼 …… 158
9.2.5 自定義回響碼 …… 160
9.2.6 設計媒介類型 …… 162
9.2.7 設計媒介類型模式 …… 163
9.2.8 複雜方法設計 …… 164
9.2.9 無狀態複雜方法 …… 166
9.2.10 狀態複雜方法 …… 171
第10章 Web服務及REST服務的服務API與契約版本控制 …… 176
10.1 版本控制的基本要素 …… 176
10.1.1 Web服務版本控制 …… 176
10.1.2 REST服務版本控制 …… 177
10.1.3 粒度的精細與粗糙限制 …… 177
10.2 版本控制和兼容性 …… 178
10.2.1 後向兼容 …… 178
10.2.2 前向兼容 …… 180
10.2.3 兼容性變更 …… 182
10.2.4 非兼容性變更 …… 183
10.3 REST 服務兼容性關注點 …… 184
10.4 版本標識符 …… 186
10.5 版本控制策略 …… 188
10.5.1 嚴格策略(新變更,新契約) …… 188
10.5.2 彈性策略(後向兼容) …… 189
10.5.3 鬆散策略(反向和前向兼容) …… 189
10.5.4 策略總結 …… 190
10.6 REST服務版本控制關注點 …… 190
第三部分 附錄
附錄A 面向服務原則參考 …… 194
附錄B REST約束條件參考 …… 199
附錄C SOA設計模式參考 …… 203
附錄D 注釋版SOA聲明 …… 220
4.4.8 服務開發 …… 69
4.4.9 服務測試 …… 69
4.4.10 服務部署和維護 …… 71
4.4.11 服務使用和監控 …… 71
4.4.12 服務發現 …… 72
4.4.13 服務版本控制和退役 …… 72
4.4.14 項目階段和組織角色 …… 72
第5章 理解服務與微服務的層次 …… 74
5.1 服務層次簡介 …… 74
5.1.1 服務模型和服務層次 …… 74
5.1.2 服務和候選服務能力 …… 76
5.2 分解業務問題 …… 76
5.2.1 功能分解 …… 76
5.2.2 服務封裝 …… 76
5.2.3 不可知上下文 …… 76
5.2.4 不可知能力 …… 79
5.2.5 功能抽象 …… 79
5.2.6 實體抽象 …… 80
5.2.7 非不可知上下文 …… 80
5.2.8 微任務抽象和微服務 …… 81
5.2.9 流程抽象和任務服務 …… 81
5.3 構建面向服務的解決方案 …… 84
5.3.1 面向服務和服務組合 …… 84
5.3.2 能力組合和能力再組合 …… 84
5.3.3 邏輯集中與服務規範化 …… 90
第二部分 面向服務的分析與設計
第6章 Web服務及微服務的分析與建模 …… 94
6.1 Web服務建模過程 …… 94
6.1.1 步驟1:分解業務流程(使之成為細粒度操作) …… 95
6.1.2 步驟2:過濾不適操作 …… 98
6.1.3 步驟3:定義候選實體服務 …… 99
6.1.4 步驟4:識別特定流程邏輯 …… 101
6.1.5 步驟5:套用面向服務 …… 102
6.1.6 步驟6:識別候選服務組合 …… 102
6.1.7 步驟7:分析處理需求 …… 103
6.1.8 步驟8:定義候選公共服務 …… 104
6.1.9 步驟9:定義候選微服務 …… 105
6.1.10 步驟10:套用面向服務 …… 106
6.1.11 步驟11:修訂候選服務組合 …… 106
6.1.12 步驟12:修訂候選能力分組 …… 106
第7章 REST服務及微服務的分析與建模 …… 107
7.1 REST服務建模過程 …… 107
7.1.1 步驟1:分解業務流程(使之成為細粒度操作) …… 109
7.1.2 步驟2:濾掉不適操作 …… 109
7.1.3 步驟3:定義候選實體服務 …… 110
7.1.4 步驟4:識別特定流程邏輯 …… 112
7.1.5 步驟5:識別資源 …… 113
7.1.6 步驟6:將服務能力與資源和方法相關聯 …… 114
7.1.7 步驟7:套用面向服務 …… 116
7.1.8 步驟8:識別候選服務組合 …… 117
7.1.9 步驟9:分析處理需求 …… 118
7.1.10 步驟10:定義候選公共服務(並且關聯資源和方法) …… 119
7.1.11 步驟11:定義候選微服務(並且關聯資源和方法) …… 121
7.1.12 步驟12:套用面向服務 …… 121
7.1.13 步驟13:修訂候選服務組合 …… 121
7.1.14 步驟14:修改資源定義和候選能力分組 …… 122
7.2 附加因素 …… 123
7.2.1 統一契約建模和REST服務目錄建模 …… 123
7.2.2 REST約束條件和統一契約建模 …… 125
7.2.3 REST服務能力粒度 …… 125
7.2.4 資源與實體 …… 126
第8章 Web服務的服務API與契約設計 …… 128
8.1 服務模型設計關注點 …… 129
8.1.1 實體服務設計 …… 129
8.1.2 公共服務設計 …… 130
8.1.3 微服務設計 …… 131
8.1.4 任務服務設計 …… 131
8.2 Web服務設計指南 …… 140
8.2.1 套用命名標準 …… 140
8.2.2 套用合適的服務契約API粒度 …… 141
8.2.3 將Web服務的操作設計成原生可擴展的 …… 143
8.2.4 考慮採用模組化WSDL文檔 …… 143
8.2.5 慎用命名空間 …… 144
8.2.6 使用SOAP文檔和Literal屬性值 …… 145
第9章 REST服務及微服務的服務API與契約設計 …… 147
9.1 服務模型設計關注點 …… 147
9.1.1 實體服務設計 …… 148
9.1.2 公共服務設計 …… 148
9.1.3 微服務設計 …… 149
9.1.4 任務服務設計 …… 150
9.2 REST服務設計指南 …… 155
9.2.1 統一服務契約設計關注點 …… 155
9.2.2 設計和標準化方法 …… 155
9.2.3 設計和標準化HTTP報頭 …… 157
9.2.4 設計和標準化HTTP回響碼 …… 158
9.2.5 自定義回響碼 …… 160
9.2.6 設計媒介類型 …… 162
9.2.7 設計媒介類型模式 …… 163
9.2.8 複雜方法設計 …… 164
9.2.9 無狀態複雜方法 …… 166
9.2.10 狀態複雜方法 …… 171
第10章 Web服務及REST服務的服務API與契約版本控制 …… 176
10.1 版本控制的基本要素 …… 176
10.1.1 Web服務版本控制 …… 176
10.1.2 REST服務版本控制 …… 177
10.1.3 粒度的精細與粗糙限制 …… 177
10.2 版本控制和兼容性 …… 178
10.2.1 後向兼容 …… 178
10.2.2 前向兼容 …… 180
10.2.3 兼容性變更 …… 182
10.2.4 非兼容性變更 …… 183
10.3 REST 服務兼容性關注點 …… 184
10.4 版本標識符 …… 186
10.5 版本控制策略 …… 188
10.5.1 嚴格策略(新變更,新契約) …… 188
10.5.2 彈性策略(後向兼容) …… 189
10.5.3 鬆散策略(反向和前向兼容) …… 189
10.5.4 策略總結 …… 190
10.6 REST服務版本控制關注點 …… 190
第三部分 附錄
附錄A 面向服務原則參考 …… 194
附錄B REST約束條件參考 …… 199
附錄C SOA設計模式參考 …… 203
附錄D 注釋版SOA聲明 …… 220