注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)其他編程語言/工具Azure、DevOps和微服務(wù)軟件架構(gòu)實(shí)戰(zhàn)(第2版)

Azure、DevOps和微服務(wù)軟件架構(gòu)實(shí)戰(zhàn)(第2版)

Azure、DevOps和微服務(wù)軟件架構(gòu)實(shí)戰(zhàn)(第2版)

定 價:¥128.00

作 者: [葡] 加布里埃爾·巴普蒂斯特,[意]弗朗西斯科·阿布魯澤塞 著,葉偉民 張?zhí)諚?王偉 肖寧 譯
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302618508 出版時間: 2023-01-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  軟件架構(gòu)是指可以簡化軟件開發(fā)過程并提高應(yīng)用程序質(zhì)量的實(shí)現(xiàn)架構(gòu)和系統(tǒng)。本書在第1版的基礎(chǔ)上進(jìn)行了全面修訂和擴(kuò)展,面向.NET 5和C# 9,介紹了一些能夠助你成為一名卓越的軟件架構(gòu)師所需的關(guān)鍵技能、知識和**實(shí)踐。 第2版增加了對軟件架構(gòu)原則的額外講述、Azure服務(wù)結(jié)構(gòu)、Kubernetes和Blazor等新章節(jié)。另外,還增加了關(guān)于安全性、微服務(wù)和DevOps的討論,以及軟件開發(fā)周期的GitHub部署?!∈紫龋榻B如何將用戶需求轉(zhuǎn)換為軟件架構(gòu)需求,并探討功能性需求和非功能性需求之間的差異。然后,探討如何為基礎(chǔ)設(shè)施選擇云解決方案,以及如何在基于云的環(huán)境中管理應(yīng)用程序。最后,講解軟件設(shè)計(jì)模式和各種軟件方法,從而幫助你解決開發(fā)過程中遇到的常見問題?!W(xué)習(xí)完本書,你將能夠構(gòu)建并交付可滿足組織業(yè)務(wù)需求的高度可擴(kuò)展的企業(yè)應(yīng)用程序。 主要內(nèi)容 ● 使用多種技術(shù)克服現(xiàn)實(shí)工作中的架構(gòu)挑戰(zhàn),并從設(shè)計(jì)層面解決問題 ● 應(yīng)用分層架構(gòu)、面向服務(wù)架構(gòu)和微服務(wù)架構(gòu) ● 利用容器、Docker、Kubernetes和Blazor等工具高效管理微服務(wù) ● 快速使用Azure工具和功能提供全局解決方案 ● 使用C# 9及其新功能編程和維護(hù)Azure功能 ● 了解什么情況下最適合使用測試驅(qū)動開發(fā)方法 ● 編寫自動化功能測試用例 ● 充分利用DevOps原則實(shí)現(xiàn)CI/CD環(huán)境

作者簡介

  Gabriel Baptista是一名軟件架構(gòu)師,他領(lǐng)導(dǎo)技術(shù)團(tuán)隊(duì)跨項(xiàng)目使用Microsoft平臺完成了多個與零售和工業(yè)相關(guān)的項(xiàng)目。他是Azure解決方案方面的專家,也是一位講授軟件工程、開發(fā)和架構(gòu)等課程的教授,并出版了一些與計(jì)算機(jī)相關(guān)的書籍。他在知名.NET技術(shù)社區(qū)網(wǎng)站Microsoft Channel 9上演講,還與他人一起創(chuàng)辦了SMIT公司,主要開展開發(fā)解決方案方面的業(yè)務(wù),他將DevOps理念視為滿足用戶需求的關(guān)鍵。“致我親愛的家人Murilo、Heitor和Denise,他們經(jīng)常鼓勵我。感謝我的父母Elisabeth和Virgílio,以及我的祖母、外祖母Maria和Lygia,他們一直鼓勵我。特別感謝Packt團(tuán)隊(duì),全體成員的辛勤勞動保證了這本書的優(yōu)秀質(zhì)量。”Francesco Abbruzzese是MVC Controls Toolkit和Blazor Controls Toolkit程序庫的作者。他從 ASP.NET MVC第一個版本就開始為Microsoft Web技術(shù)棧的傳播和推廣做貢獻(xiàn)。他的公司Mvcct Team提供一些與Web技術(shù)相關(guān)的Web應(yīng)用程序、工具和服務(wù)。他曾從事人工智能系統(tǒng)相關(guān)的工作(例如為金融機(jī)構(gòu)實(shí)施了首批決策支持系統(tǒng)),后來轉(zhuǎn)型去做電視游戲(如當(dāng)時排名前10位的Puma Street Soccer)。“感謝親愛的父母,我的一切都來自他們。特別感謝Packt全體員工以及為改進(jìn)本書整體代碼質(zhì)量做出貢獻(xiàn)的審稿人員。”

圖書目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號