Azure、DevOps 和微服務軟件架構實戰, 2/e Software Architecture with C# 9 and .NET 5 - Second Edition: Architecting software solutions using microservices, DevOps, and design patterns for Azur
[葡] 加布里埃爾·巴普蒂斯特(Gabriel Baptista) [意]弗朗西斯科·阿布魯澤塞(Francesco Abbruzzese)著 葉偉民 張陶棟 王偉 肖
- 出版商: 清華大學
- 出版日期: 2023-01-01
- 定價: $768
- 售價: 8.5 折 $653
- 語言: 簡體中文
- ISBN: 730261850X
- ISBN-13: 9787302618508
-
相關分類:
DevOps、Microservices 微服務、SOA、Microsoft Azure、軟體架構
- 此書翻譯自: Software Architecture with C# 9 and .NET 5 : Architecting software solutions using microservices, DevOps, and design patterns for Azure, 2/e (Paperback)
立即出貨
買這商品的人也買了...
-
$780$616 -
$580$458 -
$650$507 -
$580$458 -
$620$490 -
$600$468 -
$500$395 -
$880$695 -
$414$393 -
$857C# 10 和 .NET 6 入門與跨平臺開發, 6/e
-
$650$507 -
$600$468 -
$1,640$1,558 -
$580$458 -
$607SQL 數據分析實戰, 2/e
-
$594$564 -
$580$458 -
$479$455 -
$1,014$963 -
$680$530 -
$650$513 -
$620$484 -
$880$695 -
$768$730 -
$620$490
相關主題
商品描述
軟件架構是指可以簡化軟件開發過程並提高應用程序質量的實現架構和系統。本書在第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