Azure,DevOps和微服務軟體架構實戰(第2版)

Azure,DevOps和微服務軟體架構實戰(第2版)

《Azure、DevOps和微服務軟體架構實戰(第2版)》是2023年清華大學出版社出版的圖書,作者是[葡] 加布里埃爾·巴普蒂斯特(Gabriel Baptista)、 [意]弗朗西斯科·阿布魯澤塞(Francesco Abbruzzese),譯者是葉偉民、張陶棟、王偉和肖寧。

基本介紹

  • 中文名:Azure、DevOps和微服務軟體架構實戰(第2版)
  • 作者:[葡] 加布里埃爾·巴普蒂斯特(Gabriel Baptista) [意]弗朗西斯科·阿布魯澤塞(Francesco Abbruzzese)
  • 譯者:葉偉民 張陶棟 王偉 肖寧
  • 出版社:清華大學出版社
  • 出版時間:2023年1月
  • 開本:16 開
  • ISBN:9787302618508
內容簡介,圖書目錄,作者簡介,

內容簡介

軟體架構是指可以簡化軟體開發過程並提高應用程式質量的實現架構和系統。本書在第1版的基礎上進行了全面修訂和擴展,面向.NET 5和C# 9,介紹了一些能夠助你成為一名優秀的軟體架構師所需的關鍵技能、知識和上佳實踐。   
第2版增加了對軟體架構原則的額外講述、Azure服務結構、Kubernetes和Blazor等新章節。另外,還增加了關於安全性、微服務和DevOps的討論,以及軟體開發周期的GitHub部署。首先,介紹如何將用戶需求轉換為軟體架構需求,並探討功能性需求和非功能性需求之間的差異。然後,探討如何為基礎設施選擇雲解決方案,以及如何在基於雲的環境中管理應用程式。最後,講解軟體設計模式和各種軟體方法,從而幫助你解決開發過程中遇到的常見問題。   
學習完本書,你將能夠構建並交付可滿足組織業務需求的高度可擴展的企業應用程式。
主要內容
● 使用多種技術克服現實工作中的架構挑戰,並從設計層面解決問題
● 套用分層架構、面向服務架構和微服務架構
● 利用容器、Docker、Kubernetes和Blazor等工具高效管理微服務
● 快速使用Azure工具和功能提供全局解決方案
● 使用C# 9及其新功能編程和維護Azure功能
● 了解什麼情況下最適合使用測試驅動開發方法
● 編寫自動化功能測試用例
● 充分利用DevOps原則實現CI/CD環境

圖書目錄

第1章 軟體架構的重要性 1
1.1 什麼是軟體架構 1
1.2 軟體開發過程模型 4
1.2.1 傳統的軟體開發過程模型 4
1.2.2 敏捷軟體開發過程模型 6
1.3 收集正確信息以設計高質量軟體 10
1.3.1 了解需求收集過程 10
1.3.2 收集準確的用戶需求 10
1.3.3 分析需求 11
1.3.4 將需求整理成規範的文檔 11
1.3.5 覆核用戶需求文檔 13
1.4 設計技術 13
1.4.1 設計思維 13
1.4.2 設計衝刺 14
1.5 收集需求階段就要考慮的常見問題 14
1.5.1 問題1:網站太慢,無法打開網頁 14
1.5.2 問題2:用戶的需求未得到正確實現 16
1.5.3 問題3:系統會在什麼環境使用 17
1.6 World Wild Travel Club案例簡介 17
1.7 本章小結 19
1.8 練習題 19
第2章 非功能性需求 21
2.1 技術性要求 21
2.2 使用Azure和.NET 5實現可擴展性、可用性和可恢復性 21
2.2.1 在Azure中創建可擴展的Web應用程式 22
2.2.2 使用.NET 5創建可擴展的Web應用程式 26
2.3 C#編程時需要考慮的性能問題 29
2.3.1 字元串串聯 29
2.3.2 異常 30
2.3.3 多執行緒 31
2.4 易用性——插入數據為什麼會耗費太長時間 32
2.4.1 如何設計快速選擇 33
2.4.2 從大量的條目中進行選擇 34
2.5 .NET Core的互操作性 35
2.6 在設計層面實現安全性 37
2.7 用例——了解.NET Core項目的主要類型 38
2.8 本章小結 40
2.9 練習題 40
第3章 使用Azure DevOps記錄需求 41
3.1 技術性要求 41
3.2 Azure DevOps介紹 41
3.3 使用Azure DevOps 組織工作 45
3.3.1 Azure DevOps存儲庫 45
3.3.2 包源 47
3.3.3 測試計畫 49
3.3.4 管道 50
3.4 使用Azure DevOps管理系統需求 50
3.4.1 Epic工作項 50
3.4.2 Feature工作項 51
3.4.3 Product Backlog工作項/ User Story工作項 51
3.5 用例——在Azure DevOps中展現WWTravelClub 51
3.6 本章小結 55
3.7 練習題 55
第4章 確定基於雲的最佳解決方案 56
4.1 技術性要求 56
4.2 不同的軟體部署模型 56
4.2.1 IaaS和Azure服務 57
4.2.2 PaaS—— 開發者的世界 59
4.2.3 SaaS——只需要登錄即可開始 63
4.2.4 無伺服器解決方案 64
4.3 為什麼混合應用程式在許多情況下如此有用 64
4.4 用例——哪一種才是最好的
雲解決方案 65
4.5 本章小結 66
4.6 練習題 66
第5章 在企業套用中套用微服務架構 67
5.1 技術性要求 67
5.2 什麼是微服務 67
5.2.1 微服務與模組概念的演變 68
5.2.2 微服務設計原則 69
5.2.3 容器和Docker 71
5.3 微服務什麼時候有幫助 72
5.3.1 分層架構和微服務 72
5.3.2 什麼時候值得考慮微服務架構 74
5.4 .NET如何處理微服務 75
5.4.1 .NET通信工具 75
5.4.2 可恢復性任務執行 76
5.4.3 使用通用宿主 77
5.4.4 Visual Studio對Docker的支持 80
5.4.5 Azure和Visual Studio對微服務編排的支持 84
5.5 管理微服務需要哪些工具 84
5.6 本章小結 86
5.7 練習題 86
第6章 Azure Service Fabric 87
6.1 技術性要求 87
6.2 定義和配置Azure Service Fabric群集 90
6.2.1 步驟1:基本信息 90
6.2.2 步驟2:群集配置 91
6.2.3 步驟3:安全配置 93
6.3 用例——購買記錄微服務 95
6.3.1 確保訊息冪等性 97
6.3.2 互動程式庫 99
6.3.3 實現通信的接收端 100
6.3.4 實現服務邏輯 102
6.3.5 定義微服務的宿主 106
6.3.6 與服務進行通信 107
6.3.7 測試應用程式 108
6.4 本章小結 109
6.5 練習題 109
第7章 Azure Kubernetes服務 110
7.1 技術性要求 110
7.2 Kubernetes 基礎 110
7.2.1 .yaml 檔案 111
7.2.2 ReplicaSet和Deployment 112
7.2.3 StatefulSet 114
7.2.4 Service 114
7.2.5 Ingress 118
7.3 與Azure Kubernetes群集互動 119
7.3.1 使用 Kubectl 121
7.3.2 部署留言板示例應用程式 122
7.4 Kubernetes高級概念 124
7.4.1 需要永久存儲 125
7.4.2 Kubernetes Secret 126
7.4.3 存活性和就緒性檢查 127
7.4.4 自動縮放 128
7.4.5 Helm:安裝入口控制器 129
7.5 本章小結 131
7.6 練習題 132
第8章 在C#中與數據進行互動——Entity Framework Core 133
8.1 技術性要求 133
8.2 ORM基礎 134
8.3 配置Entity Framework Core 136
8.3.1 定義資料庫實體 137
8.3.2 定義映射集合 139
8.3.3 完成映射配置 139
8.4 Entity Framework Core遷移 141
8.5 使用Entity Framework Core查詢和更新數據 144
8.5.1 將數據返回給表示層 147
8.5.2 直接發出SQL命令 148
8.5.3 處理事務 149
8.6 數據層的部署 149
8.7 Entity Framework Core的高級功能 150
8.8 本章小結 151
8.9 練習題 151
第9章 在雲上選擇數據存儲 152
9.1 技術性要求 152
9.2 不同用途的不同存儲庫 153
9.2.1 關係資料庫 153
9.2.2 NoSQL資料庫 155
9.2.3 Redis 156
9.2.4 Azure存儲賬戶 156
9.3 在結構化存儲和NoSQL存儲之間進行選擇 157
9.4 Azure Cosmos DB—— 一種管理跨區域資料庫的選擇 158
9.4.1 創建一個Azure Cosmos DB賬戶 158
9.4.2 創建Azure Cosmos集合 159
9.4.3 訪問Azure Cosmos 數據 160
9.4.4 定義資料庫一致性 160
9.4.5 Cosmos DB客戶端 162
9.4.6 Cosmos DB的Entity Framework Core提供程式 163
9.5 用例——存儲數據 164
9.6 本章小結 167
9.7 練習題 167
第10章 Azure函式套用 168
10.1 技術性要求 168
10.2 Azure函式應用程式 168
10.2.1 消耗計畫 169
10.2.2 函式高級計畫 169
10.2.3 套用服務計畫 170
10.3 使用C#運行Azure函式套用 170
10.4 維護Azure函式套用 174
10.5 用例——通過Azure函式套用傳送電子郵件 176
10.5.1 第一步:創建Azure佇列存儲 176
10.5.2 第二步:創建傳送電子郵件的函式 178
10.5.3 第三步:創建Queue Trigger函式 180
10.6 本章小結 181
10.7 練習題 181
第11章 設計模式與.NET 5實現 182
11.1 技術性要求 182
11.2 設計模式及其目的 182
11.2.1 建造者模式 183
11.2.2 工廠模式 185
11.2.3 單例模式 186
11.2.4 代理模式 188
11.2.5 命令模式 189
11.2.6 發布者-訂閱者模式 190
11.2.7 依賴注入模式 191
11.3 .NET 5中可用的設計模式 192
11.4 本章小結 193
11.5 練習題 193
第12章 不同領域的軟體解決方案 194
12.1 技術性要求 195
12.2 什麼是軟體領域 195
12.3 理解領域驅動設計 196
12.4 實體和值對象 198
12.5 使用SOLID原則映射領域 201
12.6 聚合 203
12.7 存儲庫和工作單元模式 204
12.8 DDD實體和Entity Framework Core 205
12.9 命令查詢職責分離模式 206
12.10 命令處理程式和領域事件 208
12.11 事件溯源 210
12.12 用例——WWTravelClub的領域 210
12.13 本章小結 212
12.14 練習題 212
第13章 在C# 9中實現代碼復用 214
13.1 技術性要求 214
13.2 代碼復用的原則 214
13.2.1 什麼不是代碼復用 215
13.2.2 什麼是代碼復用 215
13.3 開發生命周期中的可復用性 216
13.4 使用.NET 5或.NET Standard進行代碼復用 217
13.5 在C#中處理代碼復用 218
13.5.1 面向對象分析 218
13.5.2 泛型 220
13.6 如果代碼不可復用怎么辦 220
13.7 如何推廣可復用的程式庫 221
13.7.1 使用DocFX文檔化.NET程式庫 221
13.7.2 使用Swagger文檔化Web API 222
13.8 用例——復用代碼以快速交付優質、安全的軟體 223
13.9 本章小結 223
13.10 練習題 224
第14章 使用.NET Core實現面向服務的架構 225
14.1 技術性要求 225
14.2 SOA方法的原則 226
14.3 SOAP Web服務 228
14.4 REST Web服務 229
14.4.1 服務類型兼容性規則 229
14.4.2 REST與原生HTTP功能 230
14.4.3 REST語言中的方法示例 232
14.4.4 OpenAPI標準 232
14.4.5 REST服務的身份驗證和鑒權 233
14.5 如何在.NET 5中處理SOA 235
14.5.1 對SOAP客戶端的支持 235
14.5.2 對gRPC的支持 236
14.5.3 ASP.NET Core簡介 236
14.5.4 使用ASP.NET Core實現REST服務 239
14.6 用例——公開WWTravelClub的旅行方案 248
14.7 本章小結 252
14.8 練習題 253
第15章 ASP.NET Core MVC 254
15.1 技術性要求 254
15.2 Web應用程式的表示層 254
15.3 ASP.NET Core MVC架構 255
15.3.1 ASP.NET Core管道工作原理 255
15.3.2 載入配置數據並與options框架一起使用 258
15.3.3 定義ASP.NET Core MVC管道 261
15.3.4 定義控制器和ViewModel 265
15.3.5 Razor視圖 267
15.3.6 復用視圖代碼 273
15.4 ASP.NET Core最新版本的新增功能 275
15.5 ASP.NET Core MVC和設計原則的關係 276
15.5.1 ASP.NET Core管道的優點 277
15.5.2 伺服器端和客戶端驗證 277
15.5.3 ASP.NET Core多語言支持 278
15.5.4 MVC模式 280
15.6 用例 —— 使用ASP.NET Core MVC實現Web應用程式 281
15.6.1 定義應用程式規範 281
15.6.2 定義應用程式架構 282
15.6.3 控制器和視圖 293
15.7 本章小結 298
15.8 練習題 298
第16章 Blazor WebAssembly 299
16.1 技術性要求 299
16.2 Blazor WebAssembly架構 300
16.2.1 什麼是單頁應用程式 300
16.2.2 載入並啟動應用程式 301
16.2.3 路由 303
16.3 Blazor頁面和組件 304
16.3.1 組件結構 304
16.3.2 模板和級聯參數 307
16.3.3 事件 309
16.3.4 綁定 311
16.3.5 Blazor如何更新HTML 312
16.3.6 組件生命周期 313
16.4 Blazor表單和驗證 314
16.5 Blazor高級功能 316
16.5.1 對組件和HTML元素的引用 316
16.5.2 JavaScript互操作性 316
16.5.3 全球化與本地化 318
16.5.4 身份驗證和授權 318
16.5.5 與伺服器的通信 320
16.6 Blazor WebAssembly第三方工具 321
16.7 用例——使用Blazor WebAssembly實現一個簡單的應用程式 322
16.7.1 準備解決方案 322
16.7.2 實現所需的ASP.NET Core REST API 323
16.7.3 在服務中實現業務邏輯 325
16.7.4 實現用戶界面 325
16.8 本章小結 328
16.9 練習題 328
第17章 C# 9編碼最佳實踐 329
17.1 技術性要求 329
17.2 越糟糕的程式設計師,編碼越複雜 329
17.2.1 可維護性指數 330
17.2.2 圈複雜度 330
17.2.3 繼承深度 333
17.2.4 類耦合度 334
17.2.5 原始碼行 336
17.3 使用版本控制系統 336
17.4 用C#編寫安全代碼 336
17.4.1 try-catch 336
17.4.2 try-finally和using 337
17.4.3 IDisposable接口 338
17.5 編寫.NET 5代碼的提示與技巧 339
17.6 編寫代碼時的注意事項 340
17.7 本章小結 341
17.8 練習題 341
第18章 單元測試用例和TDD 342
18.1 技術性要求 342
18.2 單元測試和集成測試 342
18.2.1 對單元測試和集成測試進行自動化 343
18.2.2 編寫自動化單元測試與集成測試 344
18.2.3 編寫驗收測試和性能測試 345
18.3 測試驅動開發 346
18.4 定義C#測試項目 347
18.4.1 使用xUnit測試框架 348
18.4.2 高級測試準備和清理場景 350
18.4.3 使用Moq模擬接口 351
18.5 用例 —— 在Azure DevOps中對單元測試進行自動化 352
18.6 本章小結 359
18.7 練習題 359
第19章 使用工具編寫更好的代碼 360
19.1 技術性要求 360
19.2 識別編寫良好的代碼 360
19.3 使用C#代碼評估工具 361
19.4 使用擴展工具分析代碼 365
19.4.1 使用Microsoft Code Analysis 2019 365
19.4.2 使用SonarLint for Visual Studio 2019 365
19.5 檢查分析之後的最終代碼 366
19.6 用例——在應用程式發布之前評估C#代碼 367
19.7 本章小結 368
19.8 練習題 369
第20章 DevOps 370
20.1 技術性要求 370
20.2 DevOps的描述 371
20.3 DevOps原則 371
20.4 Azure DevOps的持續交付 372
20.4.1 使用Azure管道部署程式包管理應用程式 372
20.4.2 多階段環境 379
20.5 定義持續反饋和相關的DevOps工具 381
20.5.1 使用Azure Monitor Application Insights監控軟體 381
20.5.2 使用測試和反饋工具實現反饋 384
20.6 SaaS 388
20.6.1 使組織適應服務場景 388
20.6.2 服務場景中的軟體開發過程 388
20.6.3 服務場景在技術層面的可能影響 388
20.6.4 決定何時採用SaaS解決方案 389
20.6.5 為服務場景準備解決方案 389
20.7 用例——WWTravelClub 項目方案 391
20.8 本章小結 391
20.9 練習題 392
第21章 持續集成所帶來的挑戰 393
21.1 技術性要求 393
21.2 持續集成 393
21.3 持續集成和GitHub 394
21.4 使用持續集成的風險和挑戰 396
21.4.1 禁用生產環境的持續部署 397
21.4.2 不完整的功能 398
21.4.3 不穩定的測試解決方案 400
21.5 WWTravelClub 項目方案 403
21.6 本章小結 403
21.7 練習題 403
第22章 功能測試自動化 404
22.1 技術性要求 404
22.2 功能測試的目的 404
22.3 在C#中使用單元測試工具來自動化功能測試 406
22.3.1 測試模擬環境中的應用程式 407
22.3.2 測試受控應用程式 408
22.4 用例——自動化功能測試 410
22.5 本章小結 412
22.6 練習題 413

作者簡介

Gabriel Baptista是一名軟體架構師,他領導技術團隊跨項目使用Microsoft平台完成了多個與零售和工業相關的項目。他是Azure解決方案方面的專家,也是一位講授軟體工程、開發和架構等課程的教授,並出版了一些與計算機相關的書籍。他在知名.NET技術社區網站Microsoft Channel 9上演講,還與他人一起創辦了SMIT公司,主要開展開發解決方案方面的業務,他將DevOps理念視為滿足用戶需求的關鍵。

熱門詞條

聯絡我們