精通 ABP 框架 -- 遵循軟件開發最佳實踐構建可維護的 .NET 解決方案 Mastering ABP Framework: Build maintainable .NET solutions by implementing software development best practices

[土]哈利爾·伊佈雷西姆·卡爾坎(Halil ?brahim Kalkan),楊帥

  • 精通 ABP 框架 -- 遵循軟件開發最佳實踐構建可維護的 .NET 解決方案-preview-1
  • 精通 ABP 框架 -- 遵循軟件開發最佳實踐構建可維護的 .NET 解決方案-preview-2
  • 精通 ABP 框架 -- 遵循軟件開發最佳實踐構建可維護的 .NET 解決方案-preview-3
精通 ABP 框架 -- 遵循軟件開發最佳實踐構建可維護的 .NET 解決方案-preview-1

買這商品的人也買了...

商品描述

本書全面介紹ABP框架,包括如何使用ABP框架及其提供的基礎設施逐步構建可維護的模塊化應用程序解決方案,是一本使用ABP框架構建現代Web應用程序的實用指南。本書既有關於戰略設計的內容,又涉及具體的戰術實現。不僅包含用於入門和理解原理的簡單應用程序示例,還包括一個復雜的可媲美真實項目的案例,這些示例的源代碼都是開源的。 全書包括5部分共17章。第1部分(第1~4章)簡要介紹ABP框架; 第2部分(第5~8章)重點探討ABP框架提供的基礎設施; 第3部分(第9~11章)詳細討論如何使用ABP框架實現領域驅動設計; 第4部分(第12~14章)講述ABP框架為開發用戶界面和API提供的基礎設施; 第5部分(第15~17章)討論模塊化系統、多租戶和自動化測試。 本書可作為想要學習軟件架構和**實踐、使用微軟技術和ABP框架構建可維護的Web解決方案的開發人員的參考書,也可作為高等院校電腦、軟件工程等相關專業本科生的教學參考書。

目錄大綱

目錄

 

 

 

 

 

 

 

 

 

 

第1部分

 

 

概述

第1章

 

現代軟件開發和ABP框架

 

 

 

 

1.1開發企業級Web應用程序

面臨的挑戰

 

1.1.1選擇架構

 

1.1.2DRY原則

 

1.1.3構建基礎UI

 

1.1.4實現常見的業務需求

 

1.2ABP框架提供的功能

 

1.2.1ABP框架的架構

 

1.2.2啟動模板

 

1.2.3ABP框架的基礎設施

 

1.2.4社區

 

1.3小結

 

 

第2章

 

開始使用ABP框架

 

 

 

 

2.1準備工作

 

2.1.1IDE/編輯器

 

2.1.2.Net 6 SDK

 

2.1.3數據庫管理系統

 

2.2安裝ABP CLI

 

2.3創建一個新的解決方案

 

2.3.1下載基於啟動模板的

解決方案

 

2.3.2使用ABP CLI

 

2.4運行解決方案

 

2.4.1連接字符串

 

2.4.2創建數據庫

 

2.4.3運行Web應用程序

 

2.5ABP框架提供的一些

預構建模塊

 

2.5.1賬戶模塊

 

2.5.2身份模塊

 

2.5.3租戶管理模塊

 

2.6小結

 

 

第3章

 

應用程序開發步驟

 

 

 

 

3.1準備工作

 

3.2創建解決方案

 

3.3定義領域對象

 

3.3.1Category 

 

3.3.2ProductStockState

 

3.3.3Product

 

3.3.4常量

 

3.4EF Core和數據庫映射

 

3.4.1向DbContext類中添加實體

 

3.4.2實體到數據庫表的映射

 

3.4.3AddMigration命令

 

3.4.4設置種子數據

 

3.4.5遷移數據庫

 

3.5產品信息列表

 

3.5.1ProductDto類

 

3.5.2IProductAppService接口

 

3.5.3ProductAppService類

 

3.5.4對象到對象的映射

 

3.5.5測試ProductAppService類

 

3.5.6自動API控制器和Swagger

 

3.5.7動態JavaScript代理

 

3.5.8創建產品頁面

 

3.5.9添加一個新菜單項

 

3.5.10向頁面添加產品數據表格

 

3.6創建產品

 

3.6.1應用服務契約

 

3.6.2應用服務實現

 

3.6.3UI

 

3.7編輯產品

 

3.7.1應用服務契約

 

3.7.2應用服務實現

 

3.7.3UI

 

3.8刪除產品

 

3.9小結

 

 

第4章

 

示例解決方案——EventHub

 

 

 

 

4.1準備工作

 

4.2EventHub簡介

 

4.3架構

 

4.3.1認證流程

 

4.3.2解決方案預覽

 

4.3.3項目依賴

 

4.4運行解決方案

 

4.4.1克隆GitHub倉庫

 

4.4.2運行基礎設施

 

4.4.3打開解決方案

 

4.4.4創建數據庫

 

4.4.5運行應用程序

 

4.4.6使用Tye運行解決方案

 

4.5小結

 

 

第2部分

 

 

ABP框架基礎

第5章

 

ASP.NET Core和ABP框架的基礎設施

 

 

 

 

5.1準備工作

 

5.2模塊化

 

5.2.1Startup類

 

5.2.2定義模塊類

 

5.2.3模塊依賴和啟動模塊

 

5.2.4模塊的生命周期

 

5.3依賴註入系統

 

5.3.1服務的生命周期

 

5.3.2約定優先的服務註冊方式

 

5.3.3與依賴註入相關的接口

 

5.3.4[Dependency]特性

 

5.3.5[ExposeServices]特性

 

5.4應用程序配置

 

5.4.1設置配置值

 

5.4.2讀取配置值

 

5.5選項模式

 

5.5.1定義選項類

 

5.5.2配置選項

 

5.5.3使用選項值

 

5.5.4通過配置系統設置選項值

 

5.5.5ABP框架和ASP.NET Core

的選項

 

5.6日誌

 

5.7小結

 

 

第6章

 

數據訪問基礎設施

 

 

 

 

6.1準備工作

 

6.2定義實體

 

6.2.1AggregateRoot類

 

6.2.2Entity類

 

6.2.3具有復合主鍵的實體

 

6.2.4Guid類型的主鍵

 

6.3使用倉儲

 

6.3.1通用倉儲

 

6.3.2自定義倉儲

 

6.4集成EF Core

 

6.4.1配置DBMS

 

6.4.2定義DbContext類

 

6.4.3向DI註冊DbContext類

 

6.4.4配置實體映射

 

6.4.5實現自定義倉儲

 

6.4.6加載關聯數據

 

6.5集成MongoDB

 

6.5.1定義DbContext類

 

6.5.2配置實體映射

 

6.5.3向DI註冊DbContext類

 

6.5.4實現自定義倉儲

 

6.6深入UoW系統

 

6.6.1配置UoW系統

 

6.6.2手動控制UoW系統

 

6.7小結

 

 

第7章

 

橫切關註點

 

 

 

 

7.1準備工作

 

7.2授權和權限系統

 

7.2.1簡單授權

 

7.2.2使用權限系統

 

7.2.3基於策略的授權

 

7.2.4在非控制器代碼中使用授權

 

7.3驗證用戶的輸入

 

7.3.1使用數據註解特性

 

7.3.2使用IValidatableObject接口

自定義驗證規則

 

7.3.3驗證異常

 

7.3.4禁用驗證

 

7.3.5在其他類中使用驗證

 

7.3.6集成FluentValidation

 

7.4異常處理

 

7.4.1用戶友好的異常

 

7.4.2業務異常

 

7.4.3控制異常日誌

 

7.4.4控制HTTP狀態碼

 

7.5小結

 

 

第8章

 

ABP框架提供的功能和服務

 

 

 

 

8.1準備工作

 

8.2獲取當前用戶

 

8.3數據過濾系統

 

8.3.1軟刪除數據過濾器

 

8.3.2多租戶數據過濾器

 

8.3.3禁用一個數據過濾器

 

8.3.4自定義數據過濾器

 

8.4審計日誌系統

 

8.4.1審計日誌對象

 

8.4.2審計日誌範圍

 

8.4.3審計日誌系統的配置選項

 

8.4.4精確控制審計日誌的禁用

和啟用

 

8.5緩存系統

 

8.5.1IDistributedCacheT接口

 

8.5.2緩存系統的配置選項

 

8.5.3錯誤處理

 

8.5.4在多租戶應用程序中

使用緩存

 

8.5.5使用Redis作為分佈式緩存

提供程序

 

8.5.6作廢失效的緩存

 

8.6UI本地化

 

8.6.1配置支持的語言

 

8.6.2確定當前語言

 

8.6.3定義本地化資源

 

8.6.4使用本地化JSON文件

 

8.6.5獲得本地化文本

 

8.6.6配置本地化資源

 

8.6.7在特定服務中使用本地化

 

8.6.8在客戶端中使用本地化

 

8.7小結

 

 

第3部分

 

 

領域驅動設計

第9章

 

DDD概述

 

 

 

 

9.1準備工作

 

9.2DDD簡介

 

9.2.1DDD的概念

 

9.2.2DDD分層

 

9.2.3實現DDD的構件

 

9.3基於DDD的.NET解決方案

的結構

 

9.3.1創建一個簡單的基於DDD的

.NET解決方案

 

9.3.2向ABP框架的啟動模板

項目結構演變

 

9.3.3分離宿主項目和UI項目

 

9.4多應用程序解決方案

 

9.5基於DDD的應用程序的

執行流程

 

9.6通用原則

 

9.6.1數據庫提供程序獨立原則

 

9.6.2展示層技術無關原則

 

9.7小結

 

 

第10章

 

領域層

 

 

 

 

10.1準備工作

 

10.2示例領域簡介

 

10.3聚合和實體

 

10.3.1聚合的概念

 

10.3.2通過ID引用其他聚合

 

10.3.3小聚合

 

10.3.4實體的主鍵

 

10.3.5實體的構造函數

 

10.3.6使用領域服務創建聚合

 

10.3.7業務邏輯和約束

 

10.3.8在實體方法中使用外部服務

 

10.4領域服務

 

10.5倉儲

 

10.6規約

 

10.6.1無參數的規約

 

10.6.2有參數的規約

 

10.6.3組合規約

 

10.7領域事件

 

10.7.1本地事件總線

 

10.7.2分佈式事件總線

 

10.8小結

 

 

第11章

 

應用層

 

 

 

 

11.1準備工作

 

11.2實現應用服務

 

11.3設計DTO

 

11.3.1設計DTO類

 

11.3.2驗證輸入DTO

 

11.3.3對象到對象的映射

 

11.3.4DTO設計的最佳實踐

 

11.4各層職責

 

11.4.1用戶授權

 

11.4.2控制事務

 

11.4.3驗證用戶輸入

 

11.4.4獲取當前用戶信息

 

11.5小結

 

 

第4部分

 

 

用戶界面和API開發

第12章

 

使用MVC/Razor Pages

 

 

 

 

12.1準備工作

 

12.2主題系統

 

12.2.1基礎庫

 

12.2.2佈局

 

12.3打包和壓縮系統

 

12.3.1安裝NPM包

 

12.3.2使用標準包

 

12.3.3導入腳本和樣式文件

 

12.3.4頁面打包

 

12.3.5全局打包配置

 

12.3.6創建命名打包

 

12.3.7控制打包和壓縮系統的行為

 

12.4菜單

 

12.5Bootstrap標簽助手

 

12.6表單和表單驗證

 

12.6.1呈現表單元素

 

12.6.2驗證用戶輸入

 

12.6.3本地化表單

 

12.6.4實現AJAX表單

 

12.7模態框

 

12.7.1基礎模態框

 

12.7.2模態框中的表單

 

12.7.3模態框中使用JavaScript

 

12.8JavaScript API

 

12.8.1獲得當前用戶信息

 

12.8.2檢查用戶權限

 

12.8.3檢查租戶功能

 

12.8.4本地化字符串

 

12.8.5展示消息框

 

12.8.6展示通知

 

12.9調用HTTP API

 

12.9.1abp.ajax API

 

12.9.2動態客戶端代理

 

12.9.3靜態客戶端代理

 

12.10小結

 

 

第13章

 

使用Blazor WebAssembly構建UI

 

 

 

 

13.1準備工作

 

13.2什麽是Blazor

 

13.3ABP框架的Blazor UI入門

 

13.4用戶身份驗證

 

13.5主題系統

 

13.6菜單

 

13.7使用ABP框架提供的

基礎服務

 

13.7.1用戶授權

 

13.7.2本地化用戶界面

 

13.7.3訪問當前用戶的信息

 

13.8使用ABP框架提供的UI服務

 

13.8.1展示消息框

 

13.8.2展示通知消息框

 

13.8.3展示警告框

 

13.9調用HTTP API

 

13.10全局腳本和樣式

 

13.11小結

 

 

第14章

 

構建HTTP API和實時服務

 

 

 

 

14.1準備工作

 

14.2構建HTTP API

 

14.2.1創建HTTP API項目

 

14.2.2創建ASP.NET Core控制器

 

14.2.3ABP框架的自動API

控制器系統

 

14.3訪問HTTP API

 

14.3.1使用ABP框架的動態

客戶端代理

 

14.3.2使用ABP框架的靜態(生成的)

客戶端代理

 

14.4在ABP框架中使用SignalR

 

14.4.1使用ABP框架的SignalR

集成包

 

14.4.2配置SignalR客戶端

 

14.5小結

 

 

第5部分

 

 

其他

第15章

 

模塊化系統

 

 

 

 

15.1準備工作

 

15.2模塊化簡介

 

15.2.1類庫和NuGet包

 

15.2.2應用程序模塊

 

15.3構建Payment模塊

 

15.3.1新建應用程序模塊

 

15.3.2重構Payment模塊解決

方案

 

15.3.3支付流程

 

15.3.4定義配置選項

 

15.4把Payment模塊安裝到

EventHub中

 

15.4.1設置項目依賴

 

15.4.2數據庫集成

 

15.5小結

 

 

第16章

 

多租戶

 

 

 

 

16.1準備工作

 

16.2多租戶簡介

 

16.2.1什麽是SaaS

 

16.2.2什麽是多租戶

 

16.2.3數據庫架構

 

16.3ABP框架為多租戶提供的

基礎設施

 

16.3.1啟用和禁用多租戶

 

16.3.2解析當前租戶

 

16.3.3使用當前租戶的信息

 

16.3.4切換租戶

 

16.3.5禁用數據隔離

 

16.3.6為領域實體啟用多租戶

支持

 

16.4功能系統

 

16.4.1定義功能

 

16.4.2核查功能

 

16.4.3管理租戶的功能

 

16.5何時使用多租戶

 

16.6小結

 

 

第17章

 

自動化測試

 

 

 

 

17.1準備工作

 

17.2ABP框架的測試基礎設施

 

17.2.1測試項目概覽

 

17.2.2測試項目依賴的庫

 

17.2.3運行測試

 

17.3單元測試

 

17.3.1測試靜態(無狀態)類

 

17.3.2測試無依賴項的類

 

17.3.3測試包含依賴項的類

 

17.4集成測試

 

17.4.1基於ABP框架的集成測試

 

17.4.2模擬數據庫

 

17.4.3預置測試數據

 

17.4.4測試倉儲

 

17.4.5測試領域服務

 

17.4.6測試應用服務

 

17.5小結