《精通ABP框架》是2023年9月1日清華大學出版社出版的圖書,作者:[土]哈利爾·伊布雷西姆·卡爾坎(Halil ?brahim Kalkan),楊帥。
基本介紹
- 中文名:精通ABP框架
- 作者:[土]哈利爾·伊布雷西姆·卡爾坎(Halil ?brahim Kalkan),楊帥
- 出版時間:2023年9月1日
- 出版社:清華大學出版社
- ISBN:9787302635963
- 定價:128 元
- 印次:1-1
- 印刷日期:2023.09.27
內容簡介,圖書目錄,
內容簡介
本書全面介紹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.3AddMigration命令
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小結