ASP.NET Core 3 全棧 Web 開發 : 使用 .NET Core 3.1 和 Angular 9 (第三版)
內容描述
主要內容
● 使用ASP.NET Core實現Web API接口,並通過Angular和RxJS Observable來使用接口。
● 使用Entity Framework Core的代碼優先方法和遷移支持來創建數據模型。
● 使用本地實例或Azure中的雲數據存儲來建立和配置SQL數據庫服務器。
● 使用Visual Studio 2019執行C#和JavaScript調試。
● 使用xUnit、Jasmine和Karma執行TDD和BDD單元測試。
● 使用ASP.NET Identity、IdentityServer4和Angular API實現身份驗證和授權。
● 構建漸進式Web應用,並探索服務工作線程。
目錄大綱
目錄
第1章 準備工作 1
1.1 技術需求 1
1.2 兩個框架,一個目標 2
1.2.1 ASP.NET Core的變革 2
1.2.2 Angular有哪些新變化? 5
1.2.3 選擇.NET Core和Angular的理由 11
1.3 全棧方法 12
1.4 SPA、NWA和PWA 12
1.4.1 單頁面應用程序 13
1.4.2 原生Web應用程序 13
1.4.3 漸進式Web應用程序 13
1.4.4 產品負責人的期望 15
1.5 SPA項目示例 16
1.6 準備工作空間 16
1.6.1 免責聲明 17
1.6.2 創建項目 18
1.7 小結 22
1.8 推薦主題 22
第2章 探索項目 23
2.1 技術需求 23
2.2 解決方案概述 23
2.3 .NET Core後端 24
2.3.1 Razor頁面 24
2.3.2 控制器 25
2.3.3 配置文件 26
2.4 Angular前端 32
2.4.1 工作空間 32
2.4.2 /ClientApp/src/文件夾 38
2.4.3 測試應用 40
2.5 開始工作 44
2.5.1 靜態文件緩存 44
2.5.2 清理客戶端應用 48
2.6 小結 53
2.7 推薦主題 53
第3章 前端與後端的交互 55
3.1 技術需求 55
3.2 .NET Core健康檢查簡介 55
3.2.1 添加HealthCheck中間件 56
3.2.2 添加網際控制報文協議檢查 57
3.2.3 改進ICMPHealthCheck類 59
3.3 Angular中的健康檢查 64
3.3.1 創建Angular組件 64
3.3.2 將組件添加到Angular應用 73
3.4 小結 75
3.5 推薦主題 75
第4章 使用Entity Framework Core 創建數據模型 77
4.1 技術需求 77
4.2 WorldCities Web應用 78
4.3 數據源 80
4.4 數據模型 81
4.4.1 Entity Framework Core簡介 81
4.4.2 安裝Entity Framework Core 82
4.4.3 SQL Server數據提供者 83
4.4.4 數據建模方法 84
4.5 創建實體 88
4.5.1 定義實體 88
4.5.2 定義關系 92
4.6 獲取SQL Server 94
4.6.1 安裝SQL Server 2019 95
4.6.2 在Azure上創建數據庫 97
4.6.3 配置數據庫 102
4.7 使用代碼優先方法創建數據庫 104
4.7.1 設置DbContext 105
4.7.2 數據庫初始化策略 106
4.7.3 更新appsettings.json文件 106
4.7.4 創建數據庫 107
4.7.5 添加初始遷移 107
4.8 填充數據庫 111
4.9 實體控制器 117
4.9.1 CitiesController 117
4.9.2 CountriesController 120
4.10 小結 120
4.11 推薦主題 121
第5章 獲取和顯示數據 123
5.1 技術需求 123
5.2 獲取數據 123
5.2.1 請求和響應 123
5.2.2 一個長列表 125
5.3 使用Angular Material提供數據 129
5.3.1 MatTableModule 131
5.3.2 MatPaginatorModule 134
5.3.3 MatSortModule 144
5.3.4 添加過濾功能 156
5.4 更新國家/地區 165
5.4.1 .NET Core 165
5.4.2 Angular 168
5.5 小結 173
5.6 推薦主題 174
第6章 表單和數據驗證 175
6.1 技術需求 175
6.2 探索Angular表單 176
6.2.1 Angular中的表單 176
6.2.2 使用表單的理由 177
6.2.3 模板驅動的表單 178
6.2.4 模型驅動的/響應式表單 179
6.3 構建第一個響應式表單 181
6.3.1 ReactiveFormsModule 181
6.3.2 CityEditComponent 182
6.3.3 添加導航鏈接 187
6.4 添加一個新城市 190
6.4.1 擴展CityEditComponent 190
6.4.2 添加Create a new City按鈕 193
6.4.3 HTML select 195
6.4.4 Angular Material select(MatSelectModule) 199
6.5 理解數據驗證 201
6.5.1 模板驅動的驗證 202
6.5.2 模型驅動的驗證 203
6.5.3 服務器端驗證 207
6.6 FormBuilder簡介 213
6.6.1 創建CountryEditComponent 213
6.6.2 測試CountryEditComponent 223
6.7 小結 226
6.8 推薦主題 226
第7章 代碼調整和數據服務 227
7.1 技術需求 227
7.2 優化和調整 227
7.2.1 模板改進 228
7.2.2 類繼承 229
7.3 Bug修復和改進 232
7.3.1 驗證lat和lon 232
7.3.2 添加城市個數 235
7.3.3 DTO類——真的應該使用它們嗎? 240
7.3.4 添加國家/地區名稱 244
7.4 數據服務 247
7.4.1 對比XMLHttpRequest與fetch(和HttpClient) 248
7.4.2 構建數據服務 251
7.5 小結 267
7.6 推薦主題 267
第8章 後端和前端調試 269
8.1 技術需求 269
8.2 後端調試 269
8.2.1 Windows還是Linux? 270
8.2.2 基礎知識 270
8.2.3 條件斷點 270
8.2.4 Output窗口 273
8.2.5 調試EF Core 274
8.3 前端調試 280
8.3.1 Visual Studio中的JavaScript調試 280
8.3.2 瀏覽器開發者工具 282
8.3.3 調試Angular表單 284
8.3.4 客戶端調試 289
8.4 小結 290
8.5 推薦主題 290
第9章 ASP.NET Core和Angular單元測試 291
9.1 技術需求 291
9.2 .NET Core單元測試 292
9.2.1 創建WorldCities.Tests項目 292
9.2.2 第一個測試 294
9.2.3 測試驅動的開發 300
9.2.4 行為驅動的開發 301
9.3 Angular單元測試 302
9.3.1 一般概念 303
9.3.2 第一個Angular測試套件 304
9.4 小結 313
9.5 推薦主題 314
第10章 身份驗證和授權 315
10.1 技術需求 315
10.2 是否進行身份驗證和授權 316
10.2.1 身份驗證 316
10.2.2 授權 318
10.2.3 專有與第三方 318
10.3 使用.NET Core進行專有身份驗證和授權 319
10.3.1 ASP.NET Core Identity Model 320
10.3.2 設置ASP.NET Core Identity 321
10.4 更新數據庫 337
10.4.1 添加身份遷移 337
10.4.2 應用遷移 337
10.4.3 對數據執行seed操作 339
10.5 身份驗證方法 341
10.5.1 會話 341
10.5.2 令牌 342
10.5.3 簽名 343
10.5.4 雙因子 343
10.5.5 結論 343
10.6 在Angular中實現身份驗證 343
10.6.1 創建AuthSample項目 344
10.6.2 探索Angular授權API 346
10.7 在WorldCities應用中實現授權API 359
10.7.1 導入前端授權API 359
10.7.2 調整後端代碼 361
10.7.3 測試登錄和註冊 364
10.8 小結 365
10.9 推薦主題 365
第11章 漸進式Web應用 367
11.1 技術需求 367
11.2 PWA的特徵 367
11.2.1 安全源 368
11.2.2 離線加載和Web應用清單 369
11.3 實現PWA需求 370
11.3.1 手動安裝 370
11.3.2 自動安裝 377
11.4 處理離線狀態 379
11.4.1 選項1:窗口的isonline/isoffline事件 379
11.4.2 選項2:Navigator.onLine屬性 379
11.4.3 選項3:ng-connection-service npm包 380
11.4.4 跨請求資源共享 384
11.5 測試PWA能力 385
11.5.1 使用Visual Studio和IIS Express 385
11.5.2 其他測試方法 390
11.6 小結 391
11.7 推薦主題 392
第12章 Windows和Linux部署 393
12.1 技術需求 393
12.2 為生產環境做好準備 393
12.2.1 .NET Core部署提示 394
12.2.2 Angular部署提示 399
12.3 Windows部署 402
12.3.1 在MS Azure上創建一個Windows Server VM 402
12.3.2 配置VM 406
12.3.3 發布和部署HealthCheck應用 408
12.3.4 配置IIS 410
12.3.5 測試HealthCheck Web應用 414
12.4 Linux部署 415
12.4.1 在MS Azure中創建一個Linux CentOS VM 416
12.4.2 配置Linux VM 417
12.4.3 調整WorldCities應用 421
12.4.4 發布和部署WorldCities應用 423
12.4.5 配置Kestrel和Nginx 425
12.4.6 測試WorldCities應用 430
12.5 小結 432
12.6 推薦主題 433
作者介紹
Valerio De Sanctis
是一名掌握豐富技能的IT專業人員,在使用ASP.NET、PHP和Java進行編程、Web開發和項目管理方面具有過15年的經驗。
他在多家金融和保險公司擔任過高級職務,近來在一家業界領先的售後服務和IT服務公司擔任首席技術官、首席安全官和首席運營官,
這家公司為多個的人壽和非人壽保險集團提供服務。
在職業生涯中,Valerio幫助許多私企實現和維護基於.NET的解決方案,
與許多IT行業的專家攜手工作,並領導過多個前端、後端和UX開發團隊。
他為多個的客戶和合作夥伴設計了許多企業級Web應用程序項目的架構,並監管這些項目的開發。
這些客戶包括London Stock Echange Group、Zurich Insurance Group、Allianz、Generali、
Harmonie Mutuelle、Honda Motor、FCA Group、Luottica、ANSA、Saipem、ENI、Enel、
Terna、Banzai Media、Virgilio.it、Repubblica.it和Corriere.it。
他是Stack Echange網絡上的活躍成員,在StackOverflow、ServerFault和SuperUser社區中提供關於.NET、HTML5和Web主題的建議和提示。
他的大部分項目和代碼示例在GitHub、BitBucket、NPM、CocoaPods、JQuery Plugin Registry和WordPress Plugin Repository中以開源許可提供。
他還是Microsoft開發技術MVP,這是一個年度頒發的獎項,
用來表彰全球範圍內積極與用戶和Microsoft分享高質量的實用專家技能的技術社區。
自2014年以來,他在www.ryadel.com上運營一個面向IT並關注Web的博客,提供業界新聞、評審、代碼示例和指導,
旨在幫助全球的開發人員和技術愛好者。
他撰寫了多本關於Web開發的圖書,許多都在Amazon上成為暢銷圖書,在全球範圍內銷售了數万本。