軟件架構從微觀到宏觀

  • 出版商: 清華大學
  • 出版日期: 2025-10-01
  • 售價: $768
  • 語言: 簡體中文
  • ISBN: 7302700842
  • ISBN-13: 9787302700845
  • 相關分類: Microservices 微服務
  • 下單後立即進貨 (約4週~6週)

  • 軟件架構從微觀到宏觀-preview-1
  • 軟件架構從微觀到宏觀-preview-2
  • 軟件架構從微觀到宏觀-preview-3
軟件架構從微觀到宏觀-preview-1

商品描述

"軟件架構在軟件開發中無處不在,從微觀到宏觀層面,架構都在發揮著重要作用。因此,對於軟件開發人員,包括剛剛入門的新手,掌握軟件架構設計是一項必備技能。軟件架構設計不僅要關註整體和頂層的宏觀設計,還應重視支撐架構落地的微觀設計。只有這樣,軟件架構設計才能真正起到指導開發的作用。《軟件架構從微觀到宏觀》的重點正是從微觀到宏觀的軟件架構設計及其落地實踐。 《軟件架構從微觀到宏觀》共28章,分為4個部分:第1部分(第1~6章)介紹軟件架構的基本概念、軟件架構設計所包含的內容以及架構設計需要遵循的一般原則;第2部分(第7~14章)聚焦於架構設計的微觀層面,包括常用的編程範式、多任務與異步編程、設計模式、業務模型、組件以及協同工作模式等;第3部分(第15~21章)介紹常用的軟件架構模式,包括插件式架構、管道-過濾器架構、分層架構、微服務架構和事件驅動架構等;第4部分(第22~28章)重點在於實踐,通過示例形式進一步介紹軟件架構設計和落地的具體實現。"

作者簡介

"甄 鐳同濟大學學士,北京科技大學碩士。1996年開始從事企業信息系統開發和建設工作,涉及石化、政務、汽車制造、機械制造、電力、房地產等諸多領域,參與過多項國家級重大項目。在PLOP會議等發表過多篇論文。著有《信息系統升級與整合:策略·方法·技巧》《.Net與設計模式》《領域驅動設計.Net實踐》等。"

目錄大綱

目  錄

第1部分  軟件架構概述

第1章  軟件架構是什麼 2

1.1  難以定義的軟件架構 2

1.1.1  針對軟件架構定義的不同觀點 2

1.1.2  不同視角的軟件架構 3

1.1.3  不同層次的軟件架構 4

1.1.4  不同開發階段的軟件架構 4

1.1.5  不斷發展變化的軟件架構理論 5

1.2  軟件架構的範圍 5

1.2.1  使用鴨子理論劃定軟件架構範圍 6

1.2.2  軟件架構描述了軟件的結構 6

1.2.3  軟件架構的關鍵技術和支撐技術 8

1.2.4  軟件架構決定了軟件的質量屬性 9

1.3  軟件架構的作用 9

1.3.1  體現軟件開發的早期設計決策 10

1.3.2  用於溝通與交流 10

1.3.3  軟件質量屬性的保證 10

1.3.4  軟件工程管理的抓手 10

1.4  軟件架構和軟件架構模式(風格) 10

1.5  軟件架構和軟件框架 11

1.6  本章小結 12

第2章  軟件結構 13

2.1  軟件的結構 13

2.1.1  開發邊界、運行邊界和部署邊界 13

2.1.2  架構的三種結構 15

2.1.3  軟件結構和軟件邊界的變化 15

2.1.4  軟件的範圍和規模與軟件架構 16

2.2  軟件結構的描述方法 16

2.2.1  架構藍圖 16

2.2.2  “構件”和“連接器” 17

2.2.3  圖形化建模語言 18

2.3  軟件架構模式與軟件架構風格 20

2.4  示例1—Docker的軟件架構分析 20

2.4.1  Docker的作用 20

2.4.2  Docker的頂層架構 21

2.4.3  頂層架構的展開 22

2.4.4  組件架構 23

2.4.5  Docker架構分析總結 26

2.5  示例2——設計時結構與運行時結構的關系 27

2.6  本章小結 30

第3章  關鍵技術、支撐技術與技術路線 31

3.1  關鍵技術 31

3.1.1  什麼是關鍵技術 31

3.1.2  關鍵技術的確定與識別 33

3.1.3  關鍵技術的驗證 33

3.2  支撐技術 33

3.2.1  軟件架構落地需要特定的軟件技術作為支撐 33

3.2.2  軟件技術對軟件架構設計的剛性約束 34

3.2.3  軟件架構設計與軟件技術選擇 34

3.3  技術路線 35

3.3.1  什麼是技術路線 35

3.3.2  確定技術路線時需要考慮的因素 36

3.3.3  技術路線與架構設計落地 36

3.4  關鍵技術和支撐技術的區別和聯系 37

3.5  示例1——Docker的關鍵技術 37

3.5.1  Docker關鍵技術概述 37

3.5.2  關鍵技術在架構中的位置 38

3.5.3  是否可以替換關鍵技術之外的部分 39

3.6  示例2——圖形展示軟件:關鍵技術與支撐技術的區別 39

3.7  本章小結 40

第4章  質量屬性 41

4.1  什麼是軟件的質量屬性 41

4.2  軟件質量屬性的內容 42

4.2.1  可用性 43

4.2.2  性能 43

4.2.3  安全性 44

4.2.4  可部署性 44

4.2.5  易用性 44

4.2.6  可修改性 45

4.2.7  可集成性 46

4.2.8  可測試性 46

4.2.9  能源效率 47

4.3  軟件架構設計與質量屬性 47

4.3.1  從宏觀和微觀兩個層面解決質量屬性問題 47

4.3.2  可修改性是滿足質量屬性需求的重要抓手 48

4.3.3  使用針對質量屬性需求的通用解決方案 49

4.3.4  使用針對特定質量屬性的成熟方案 50

4.3.5  關註與架構沒有直接關聯的質量屬性 52

4.4  本章小結 53

第5章  軟件架構設計的原則 54

5.1  設計原則概述 54

5.2  基本技術原理 54

5.2.1  抽象 55

5.2.2  封裝 56

5.2.3  信息隱藏 57

5.2.4  模塊化 60

5.2.5  職責分離 60

5.2.6  耦合和內聚 60

5.2.7  策略和實現分離 61

5.2.8  接口和實現分離 61

5.2.9  分而治之 62

5.3  SOLID原則 62

5.3.1  單一職責原則 62

5.3.2  開閉原則 64

5.3.3  裏氏替換原則 64

5.3.4  接口隔離原則 66

5.3.5  依賴反轉原則 67

5.4  接口設計原則 67

5.4.1  無狀態原則 67

5.4.2  明確性與一致性原則 68

5.5  組件開發原則 68

5.5.1  復用/發布等同原則 69

5.5.2  共同閉包原則 69

5.5.3  共同復用原則 69

5.6  本章小結 69

第6章  如何完成軟件架構設計 70

6.1  架構設計的前期工作 70

6.1.1  確定軟件的商業目標 70

6.1.2  確定軟件的業務目標 72

6.1.3  劃分軟件的業務範圍 73

6.1.4  確定軟件的開發和使用環境 74

6.1.5  確定軟件開發的組織結構 75

6.2  遵守軟件開發的一般規律 75

6.2.1  遵守設計原理與原則 75

6.2.2  在開發過程中進行疊代 75

6.2.3  根據實際情況使用正向過程與逆向過程 76

6.3  設計可以落地的軟件架構 77

6.3.1  明確概念設計與概要設計的區別 77

6.3.2  避免“空中樓閣”式的架構設計 78

6.3.3  架構設計需要提供微觀設計規範 79

6.4  架構設計中的框架 79

6.4.1  是否使用重量級框架 80

6.4.2  降低業務模型與框架的耦合度 80

6.4.3  減少軟件架構對框架的依賴 81

6.5  軟件架構設計的交付物 82

6.5.1  軟件架構說明 82

6.5.2  關鍵技術解決方案和技術路線說明 83

6.5.3  確保重要質量屬性的解決方案 83

6.5.4  必要的代碼 83

6.6  架構設計中的非技術因素 85

6.6.1  利益攸關者的目標不一致 85

6.6.2  局部利益和整體利益不一致 85

6.6.3  項目的長期目標與短期目標不一致 85

6.6.4  預算與進度陷阱 86

6.7  本章小結 86

第2部分  微觀層面的架構設計

第7章  微觀層面的架構設計概述 88

7.1  軟件架構設計為什麼要深入微觀層面 88

7.1.1  關鍵技術需要在微觀層面實現 88

7.1.2  支撐技術需要在微觀層面實現 89

7.1.3  滿足質量屬性的機制在微觀層面的實現 90

7.1.4  底層架構是頂層架構的實現基礎 90

7.1.5  業務模型存在於微觀層面 90

7.2  與微觀層面架構設計相關的技術 91

7.2.1  編程範式 91

7.2.2  設計模式 91

7.2.3  多任務與異步編程 91

7.2.4  業務模型 92

7.2.5  質量屬性相關機制 92

7.2.6  組件與組件封裝 92

7.2.7  協作模式 92

7.2.8  完成軟件架構的代碼骨架 92

7.3  Log4j漏洞的架構分析 93

7.3.1  Log4j漏洞 93

7.3.2  架構分析 93

7.3.3  需要重視的微觀架構設計 96

7.3.4  從架構設計角度看如何避免Log4j漏洞 96

7.4  本章小結 97

第8章  編程範式 98

8.1  編程範式概述 98

8.2  結構化編程與結構化設計 99

8.2.1  基本概念 99

8.2.2  結構化編程的技術難點——如何實現模塊間解耦 100

8.2.3  結構化編程和結構化設計的不足 102

8.3  面向對象編程與面向對象設計 102

8.3.1  面向對象的特點 103

8.3.2  面向對象的基本概念 103

8.3.3  面向對象設計的使用場景 108

8.3.4  面向對象編程的難點 108

8.4  函數式編程 109

8.4.1  基本概念 109

8.4.2  常見模式 110

8.4.3  函數式編程設計使用場景 114

8.4.4  函數式編程的難點 115

8.5  編程範式與軟件架構 115

8.6  本章小結 116

第9章  設計模式 117

9.1  設計模式概述 117

9.1.1  模式與設計模式 117

9.1.2  與設計模式相關的常見問題 118

9.1.3  設計模式在軟件架構設計中的作用 119

9.2  軟件架構設計中常用的設計模式 119

9.2.1  模板方法模式 119

9.2.2  策略模式 120

9.2.3  適配器模式 121

9.2.4  橋接模式 122

9.2.5  代理模式 124

9.2.6  中介者模式 125

9.2.7  觀察者模式 126

9.2.8  命令模式 126

9.2.9  組合模式 127

9.2.10  外觀模式 128

9.3  依賴註入模式 128

9.3.1  依賴反轉原則 129

9.3.2  控制反轉與依賴註入 130

9.3.3  依賴註入框架 130

9.4  設計模式的函數編程實現方式 133

9.4.1  模板方法 134

9.4.2  策略模式 135

9.4.3  適配器模式 136

9.4.4  橋接模式 136

9.4.5  代理模式 137

9.4.6  命令模式 138

9.4.7  外觀模式 139

9.4.8  依賴註入 140

9.5  示例——適配器模式與橋接模式的組合模式 141

9.5.1  適配器與橋接的區別和聯系 141

9.5.2  適配器與橋接聯合工作 142

9.5.3  示例總結 144

9.6  本章小結 144

第10章  多任務與異步編程 145

10.1  多任務的實現方式 145

10.2  異步編程 146

10.2.1  異步編程的難點 146

10.2.2  采用Promise模式簡化異步編程 147

10.2.3  不同編程語言的異步實現 148

10.3  並行的實現方式 150

10.3.1  Node.js 150

10.3.2  .NET(C#) 151

10.3.3  Python 152

10.3.4  Java 152

10.4  同時使用並發與並行——模擬大仲馬烹飪 154

10.5  工作模式總結 156

10.5.1  語義上的串行模式 156

10.5.2  使用異步編程的並發模式 157

10.5.3  並行模式 157

10.6  進一步研究函數式編程 157

10.6.1  高階函數 157

10.6.2  閉包 158

10.7  多任務、異步編程與軟件架構設計 159

10.8  本章小結 159

第11章  業務模型 160

11.1  業務邏輯的存在形式 160

11.2  數學模型 161

11.2.1  計算模型 161

11.2.2  狀態機 162

11.2.3  決策表 164

11.2.4  數學模型在架構中的位置 165

11.3  數據模型 165

11.3.1  事務腳本 166

11.3.2  表模塊 168

11.3.3  活動記錄 170

11.3.4  數據模型在架構中的位置 170

11.4  領域模型 171

11.4.1  領域模型的定義和特點 171

11.4.2  領域模型的主要概念 171

11.4.3  領域模型與存儲庫模式 173

11.4.4  領域模型在架構中的位置 173

11.5  領域特定語言 173

11.5.1  DSL的定義和特點 174

11.5.2  DSL示例 174

11.5.3  DSL在架構中的位置 177

11.6  業務模型與軟件架構的關系 177

11.6.1  業務模型在架構中的位置 177

11.6.2  關註業務模型對軟件架構的影響 178

11.6.3  防止業務邏輯碎片化 179

11.7  本章小結 180

第12章  質量屬性相關的機制 181

12.1  通用機制 181

12.1.1  日誌 181

12.1.2  監控 182

12.1.3  緩存 183

12.1.4  冗余設計 185

12.2  可修改性 187

12.2.1  接口和實現分離 187

12.2.2  延遲綁定 188

12.3  可用性 189

12.3.1  心跳 189

12.3.2  時間戳 190

12.4  性能 191

12.4.1  限流 191

12.4.2  設置超時控制 192

12.4.3  請求排隊 193

12.4.4  數據庫分表 194

12.5  安全性 195

12.5.1  加密 195

12.5.2  訪問控制 196

12.5.3  防止SQL註入 198

12.5.4  防止跨站腳本攻擊 199

12.6  可測試性 200

12.6.1  沙箱 201

12.6.2  spy 202

12.6.3  stub 203

12.6.4  mock 204

12.7  本章小結 206

第13章  組件與組件封裝 207

13.1  組件簡介 207

13.1.1  組件的發展 208

13.1.2  組件的形式 208

13.1.3  程序包與程序包管理器 208

13.2  組件的開發原則 209

13.2.1  復用/發布等同原則 209

13.2.2  共同閉包原則 210

13.2.3  共同復用原則 210

13.2.4  組件開發原則之間的矛盾與平衡 210

13.3  組件封裝的目的 211

13.4  組件封裝示例 212

13.5  組件封裝與頁面架構 216

13.5.1  組件封裝方式對頁面架構的影響 217

13.5.2  帶數據源的下拉框 220

13.5.3  帶有數據源的表格 221

13.5.4  頁面組裝 222

13.6  進一步討論封裝組件的目的 223

13.7  本章小結 225

第14章  協同工作模式 226

14.1  協同工作模式概述 226

14.2  數據共享模式 227

14.2.1  數據共享模式的工作過程 227

14.2.2  數據共享模式的優勢和使用的註意事項 227

14.2.3  數據共享模式應用示例 228

14.2.4  防止讀寫沖突 228

14.2.5  使用分布式協同服務 229

14.3  消息隊列模式 232

14.3.1  消息隊列模式的工作過程 232

14.3.2  消息隊列模式的優勢和使用時的註意事項 233

14.3.3  消息隊列的通信模式 234

14.3.4  消息隊列示例——Kafka 234

14.4  事件驅動模式 237

14.4.1  事件驅動模式的工作過程 237

14.4.2  事件驅動模式與消息隊列模式的區別和聯系 238

14.4.3  事件驅動的幾種模式 238

14.5  請求應答模式 238

14.5.1  請求應答模式的工作過程 239

14.5.2  請求應答模式的使用場景和註意事項 239

14.5.3  請求應答模式相關的架構風格 240

14.5.4  請求應答模式示例——gRPC 240

14.6  集成方式 242

14.6.1  已發布語言 242

14.6.2  開放主機服務 242

14.6.3  客戶-供應商 242

14.6.4  跟隨者 242

14.7  示例—兩階段提交協議 243

14.7.1  兩階段提交協議 243

14.7.2  示例構建 244

14.7.3  示例討論 248

14.8  本章小結 248

第3部分  軟件架構模式

第15章  軟件架構模式與風格 250

15.1  概述 250

15.1.1  軟件架構模式 251

15.1.2  軟件架構風格 251

15.1.3  軟件架構模式和軟件架構風格的作用 252

15.1.4  軟件架構模式與軟件架構風格的區別和聯系 252

15.1.5  如何使用軟件架構模式與軟件架構風格 252

15.2  單體應用 254

15.2.1  單體的定義 254

15.2.2  單體應用的優勢與不足 254

15.3  單體相關的架構風格 255

15.3.1  管道-過濾器架構風格 255

15.3.2  插件(微內核)架構風格 255

15.3.3  分層架構風格 256

15.4  分布式應用 257

15.4.1  分布式應用的優勢與代價 257

15.4.2  一致性的挑戰 257

15.4.3  一致性協議與算法 258

15.5  分布式應用相關的架構風格 260

15.5.1  基於服務的架構風格 260

15.5.2  微服務架構風格 260

15.5.3  事件驅動架構 261

15.6  本章小結 262

第16章  插件式軟件架構 263

16.1  插件式架構概述 263

16.1.1  插件架構與微內核架構 263

16.1.2  插件式架構與軟件設計原則 264

16.1.3  插件式架構的組成 264

16.2  VSCode的擴展方式 265

16.3  編寫VSCode的簡單插件 266

16.4  在應用軟件中使用插件式架構 271

16.4.1  需求描述 271

16.4.2  確定內核接口 272

16.4.3  組裝插件 273

16.4.4  完整的插件式架構 275

16.5  基於微服務的插件式架構實現 276

16.6  本章小結 277

第17章  管道-過濾器 278

17.1  管道-過濾器概述 278

17.2  框架內置的管道-過濾器 279

17.2.1  Node.js中的管道-過濾器示例 279

17.2.2  .NET中的管道-過濾器示例 279

17.3  管道-過濾器的實現 280

17.3.1  使用面向對象方式創建管道-過濾器 280

17.3.2  使用函數式編程實現管道-過濾器 282

17.4  應用場景示例 286

17.4.1  身份驗證和授權 287

17.4.2  訪問控制 288

17.4.3  異常處理 290

17.5  本章小結 291

第18章  分層架構 292

18.1  分層架構概述 292

18.1.1  拓撲結構 292

18.1.2  傳統三層架構示例 293

18.1.3  使用場景 296

18.2  分層架構的衍生模式 296

18.2.1  客戶機/服務器 296

18.2.2  多層客戶機/服務器結構 297

18.2.3  瀏覽器/服務器模式 297

18.2.4  前後端分離架構 297

18.3  分層架構的不足 298

18.3.1  技術對齊而非業務對齊 298

18.3.2  難以保證業務可測試性 298

18.3.3  汙水池反模式 298

18.4  分層架構的發展——領域驅動設計相關的架構風格 299

18.4.1  領域驅動設計四層架構 299

18.4.2  六邊形架構 299

18.4.3  洋蔥圈架構 301

18.4.4  整潔架構 301

18.5  層次依賴關系倒置 302

18.6  領域驅動設計的四層架構示例 303

18.6.1  環境準備 303

18.6.2  創建領域層 303

18.6.3  創建存儲庫 309

18.6.4  創建應用層 312

18.6.5  使用Swagger模擬表示層 315

18.6.6  創建MongoDB存儲庫 317

18.6.7  層次之間的依賴關系 319

18.7  在微服務架構中使用分層模式 320

18.7.1  微服務頂層架構采用分層模式 320

18.7.2  微服務內部采用分層模式 320

18.8  本章小結 321

第19章  事件驅動架構 322

19.1  概述 322

19.2  事件驅動相關模式 323

19.2.1  事件通知 323

19.2.2  事件攜帶的狀態轉移 323

19.2.3  事件溯源 324

19.3  事件驅動架構的拓撲結構 325

19.3.1  基本結構 325

19.3.2  代理拓撲結構 326

19.3.3  中介拓撲結構 327

19.4  事件驅動架構的要點 327

19.4.1  事件驅動流程的描述 327

19.4.2  事件類型與事件數據結構的定義 328

19.4.3  框架無感設計 328

19.5  事件驅動架構的實現 328

19.6  事件驅動架構示例 331

19.6.1  需求分析——為什麼使用事件驅動 331

19.6.2  內部事件的發布與處理 332

19.6.3  使用消息中間件對外發布事件 339

19.7  本章小結 341

第20章  微服務架構 342

20.1  概述 342

20.1.1  微服務的來歷 342

20.1.2  對微服務的理解 343

20.1.3  微服務相關的技術 344

20.2  何時使用以及如何使用微服務 345

20.2.1  微服務架構的優勢與代價 345

20.2.2  何時引入微服務架構 346

20.2.3  如何使用微服務架構 346

20.3  微服務架構設計的內容 347

20.3.1  確定服務 347

20.3.2  確定服務集成方式 348

20.3.3  服務內部架構設計 348

20.3.4  微服務運行環境設計 348

20.4  微服務內部架構的代碼骨架示例 348

20.4.1  需求 349

20.4.2  創建骨架中的文件 349

20.4.3  應用程序主幹app.js 350

20.4.4  Swagger支持 351

20.4.5  RESTful API接口 352

20.4.6  業務邏輯 353

20.4.7  單元測試 354

20.4.8  Docker支持 354

20.5  微服務架構示例 355

20.5.1  搭建項目結構 355

20.5.2  實現服務邏輯 356

20.5.3  使用docker compose編排微服務 361

20.5.4  Docker網絡架構 362

20.6  本章小結 363

第21章  表示層與軟件架構 364

21.1  表示層概述 364

21.1.1  表示層設計的特殊性 364

21.1.2  表示層技術的發展 365

21.1.3  表示層需要解決的問題 366

21.2  表示層技術 366

21.2.1  單頁面應用 366

21.2.2  響應式設計 367

21.2.3  Web組件 367

21.2.4  富互聯網應用 367

21.2.5  MV*模式 367

21.3  服務端渲染相關模式 368

21.3.1  MVC模式 368

21.3.2  模板視圖 370

21.3.3  領域負載對象 371

21.4  前後端分離架構的表示層 371

21.4.1  前端直接訪問後端服務 372

21.4.2  視圖模型 373

21.4.3  領域層業務規則映射 374

21.5  單頁面前端分層架構示例 374

21.6  滿足模塊化開發的單頁面架構 377

21.6.1  前端頁面的構成 378

21.6.2  按業務模塊開發前端 379

21.7  本章小結 380

第4部分  軟件架構實踐

第22章  使用測試驅動開發輔助軟件架構設計 382

22.1  可測試性與架構的關系 382

22.2  測試驅動開發 383

22.3  使用測試驅動開發完成架構原型設計 383

22.3.1  從零開始 384

22.3.2  重構 388

22.3.3  組件的創建 391

22.3.4  工廠創建與集成測試 395

22.4  本章小結 398

第23章  微服務劃分 399

23.1  微服務劃分原則與難點 399

23.2  “設備運行績效指標系統”需求 400

23.2.1  設備運行績效指標的作用 400

23.2.2  設備運行績效指標的計算算法 401

23.2.3  指標計算變量的數據來源 401

23.2.4  功能需求 401

23.2.5  質量屬性需求 402

23.3  面向技術的服務劃分和面向業務的服務劃分 402

23.4  以計算為核心的服務劃分 403

23.4.1  確定服務 403

23.4.2  確定服務之間的集成方式 404

23.4.3  服務內部的架構設計 405

23.4.4  架構落地涉及的技術 406

23.5  以指標為核心的服務劃分 408

23.5.1  確定服務 409

23.5.2  服務內部的架構設計 409

23.6  兩種服務類型結合使用 410

23.7  本章小結 410

第24章  領域驅動設計中的軟件架構設計 411

24.1  領域驅動設計簡介 411

24.2  “社交小組”需求分析 412

24.2.1  需求說明 412

24.2.2  識別子域 412

24.2.3  確定限界上下文 414

24.3  架構風格的比較與選擇 414

24.3.1  單體架構 414

24.3.2  前後分離的應用架構 415

24.3.3  分布式應用架構 417

24.3.4  微服務架構 419

24.3.5  應用系統架構的選擇 420

24.4  架構設計演變過程 420

24.5  限界上下文內部的架構設計 423

24.6  支撐技術解決方案 426

24.6.1  集成認證服務 426

24.6.2  使用測試驅動開發創建領域模型 426

24.6.3  存儲庫實現 426

24.6.4  領域事件發布與處理 427

24.7  本章小結 427

第25章  選擇合適的架構模式 428

25.1  “後臺任務管理”的業務需求 428

25.2  架構選擇 429

25.2.1  概念模型 429

25.2.2  使用插件式架構的單體應用 430

25.2.3  基於消息中間件的分布式架構 431

25.3  架構詳細設計 432

25.3.1  對外接口 432

25.3.2  任務執行時序方案 433

25.3.3  任務的創建與存儲 434

25.3.4  任務執行 434

25.3.5  架構概覽 435

25.4  架構原型實現 436

25.4.1  概述 436

25.4.2  采用node-config讀取配置文件 437

25.4.3  采用Express創建API接口 437

25.4.4  使用node-schedule實現任務的時序類型 438

25.4.5  使用RabbitMQ作為消息中間件 438

25.4.6  使用MongoDB保存數據 439

25.4.7  任務執行部分示例 440

25.4.8  管理任務的用戶界面 441

25.5  架構分析 441

25.5.1  單體架構和分布式架構 441

25.5.2  分布式應用的部署方式 442

25.5.3  設計模式的靈活使用 442

25.6  本章小結 442

第26章  嵌套架構示例—多租戶架構模式 443

26.1  概述 443

26.1.1  多租戶的概念 444

26.1.2  多租戶模式的特點 444

26.1.3  多租戶模式的使用場景 445

26.2  多租戶總體架構 445

26.3  多租戶模式的關鍵技術 446

26.3.1  多租戶的資源共享方式 446

26.3.2  共享應用軟件和數據的多租戶系統 447

26.3.3  應用軟件與數據物理隔離的多租戶系統 448

26.4  共享應用軟件和數據的多租戶示例 450

26.5  應用軟件與數據物理隔離的多租戶示例 451

26.6  本章小結 453

第27章  遺留系統改造中的架構演化 454

27.1  遺留系統改造與新系統建設的區別 454

27.1.1  業務需求 454

27.1.2  歷史數據 455

27.1.3  基礎設施 455

27.2  遺留系統改造策略—重建或重構 455

27.3  單體應用到分布式應用的重構過程 456

27.4  單體應用到分布式應用的重建過程 459

27.5  本章小結 463

第28章  企業級應用架構簡介 464

28.1  企業級應用架構參考模型 464

28.2  標準和規範體系 465

28.3  信息門戶 466

28.4  運行管理體系 466

28.5  業務系統 467

28.6  技術支撐平臺 467

28.7  安全保障體系 468

28.8  企業應用軟件的架構設計 469

28.8.1  充分了解標準和規範體系 469

28.8.2  充分利用企業架構提供的各種資源 470

28.8.3  盡量使用企業架構推薦的軟件技術 470

28.8.4  充分了解與項目相關的其他應用軟件 470

28.9  本章小結 470

後記 471

附錄一  參考文獻 473

附錄二  開發環境與工具軟件 475

附錄三  詞匯說明 478