国产精品一久久香蕉产线看/亚洲图区欧美/亚洲国产精品电影人久久网站/欧美日韩在线视频一区

歡迎光臨中圖網 請 | 注冊

包郵 領域驅動設計.NET實踐

作者:甄鐳
出版社:清華大學出版社出版時間:2024-01-01
開本: 其他 頁數: 528
中 圖 價:¥102.1(7.4折) 定價  ¥138.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

領域驅動設計.NET實踐 版權信息

領域驅動設計.NET實踐 本書特色

《領域驅動設計.Net實踐》是一本重要的指南,旨在幫助.NET開發者掌握領域驅動設計的核心概念和實踐技巧。本書不僅涵蓋了領域驅動設計的基本原理,還以實際項目為例,詳細介紹了如何應用領域驅動設計構建可靠的應用系統。
本書還涵蓋了不同應用場景下的實踐,包括構建Web應用、桌面應用、移動應用和微服務架構。同時,你還將學習到關于團隊組織、代碼管理、自動化測試和項目重構等方面的實踐經驗。
無論你是初學者還是有經驗的.NET開發者,本書都將成為你的重要參考,幫助你理解和應用領域驅動設計,構建出可靠、高效的應用系統。不容錯過的一本指南,助你在.NET開發領域取得更大的成功!

領域驅動設計.NET實踐 內容簡介

《領域驅動設計.Net實踐》介紹領域驅動設計的基本概念和在.Net環境下使用領域驅動設計開發應用軟件的基本方法。全書分為3個部分:第1部分(第1~6章)介紹領域模型和如何創建與驗證領域模型;第2部分(第7~16章)介紹與領域驅動設計相關的.Net技術;第3部分(第17~26章)介紹如何以領域模型為核心構造各種類型的應用系統,并講解項目的升級和演化方法。為了幫助讀者更好地理解和應用領域驅動設計,本書選取詩詞游戲項目作為示例,貫穿全書的3個部分,引導讀者從零開始構建該項目,*終完成一個前后端分離的單頁面應用和基于微服務架構的應用。 《領域驅動設計.Net實踐》圍繞示例項目開發,介紹使用行為驅動開發輔助領域模型驗證、在開發中進行持續集成、源代碼管理和程序包發布等技術,還介紹使用成熟的DDD技術框架進行項目開發的優缺點,以及系統提升與持續改進過程中需要注意的問題。 《領域驅動設計.Net實踐》面向對領域驅動設計感興趣的開發人員,包括剛入行的程序員,只要讀者對.Net環境和C#語言有一定的了解就可以閱讀本書。此外,本書也適合作為高等院校和培訓機構相關專業的教學參考書。

領域驅動設計.NET實踐 目錄

第1部分 創建領域模型 第1章 領域驅動設計的概念 2 1.1 軟件的復雜性 2 1.2 領域驅動設計簡介 3 1.2.1 限界上下文 3 1.2.2 戰略設計 4 1.2.3 領域模型 5 1.2.4 通用語言 5 1.3 領域驅動設計使用中的難點 5 1.3.1 對軟件復雜性理解的偏差 6 1.3.2 術語的理解 6 1.3.3 技術框架問題 7 1.3.4 英語障礙 8 1.4 學習和使用領域驅動設計的一些體會 9 1.4.1 理解領域驅動設計的精髓 9 1.4.2 使用“戰略設計”規劃項目 9 1.4.3 在開發過程中使用“戰術設計” 10 1.4.4 在學習中盡量嘗試各種技術,在實踐中保持簡潔 11 1.4.5 實事求是,避免將理論當作教條 11 1.5 本書概況 11 1.5.1 本書的目標和結構 11 1.5.2 為什么選擇.Net 12 1.5.3 本書選擇的示例 12 1.5.4 本書使用的開發環境 12 1.5.5 本書中的數據和代碼 13 1.6 本章小結 13 第2章 從零開始構建詩詞游戲 14 2.1 需求概述 14 2.2 領域、子域與限界上下文 15 2.3 限界上下文的初步確定 16 2.3.1 用戶認證上下文 18 2.3.2 詩詞游戲上下文 19 2.3.3 詩詞服務上下文 19 2.3.4 游戲管理上下文 19 2.4 限界上下文映射 19 2.4.1 各行其道 20 2.4.2 已發布語言 20 2.4.3 開放主機服務 20 2.4.4 客戶-供應商 21 2.4.5 跟隨者 21 2.4.6 防腐層 21 2.4.7 合作方式 21 2.4.8 共享內核 22 2.5 詩詞游戲上下文的通用語言 22 2.6 創建**個版本 23 2.7 本章小結 27 第3章 理解領域模型 28 3.1 領域模型概述 28 3.2 實體 28 3.2.1 實體的基本概念 29 3.2.2 從業務概念中發現實體 31 3.2.3 實體中數據的封裝 33 3.2.4 實體中的方法 35 3.2.5 為什么要避免“貧血”模型 37 3.3 值對象 38 3.3.1 值對象的概念 38 3.3.2 值對象的實現 39 3.3.3 在模型中使用值對象的好處 41 3.4 聚合和聚合根 42 3.5 存儲庫 43 3.5.1 存儲庫的概念 43 3.5.2 存儲庫接口示例 44 3.5.3 是否可以使用EF Core等技術代替存儲庫 46 3.5.4 構建測試用的存儲庫實現 46 3.6 領域事件 48 3.6.1 為什么需要領域事件 48 3.6.2 領域事件的概念 49 3.6.3 在項目中增加領域事件 49 3.7 重構項目框架 57 3.8 完善詩詞服務 58 3.9 本章小結 62 第4章 領域服務與應用服務 63 4.1 **個領域服務 63 4.2 對游戲進行優化 65 4.2.1 問題分析 65 4.2.2 設計模式的使用 66 4.2.3 解決方案 67 4.3 領域服務的引入 69 4.4 應用服務 72 4.4.1 創建游戲 73 4.4.2 游戲過程 77 4.5 領域服務與應用服務的區別 83 4.6 避免濫用領域服務 84 4.7 本章小結 84 第5章 領域模型的驗證與演化 85 5.1 領域模型構建過程回顧 85 5.2 領域模型設計需要注意的幾個問題 86 5.2.1 學習領域知識,充分溝通 86 5.2.2 分析模式與設計模式的使用 86 5.2.3 遵守軟件設計的一般規律 86 5.2.4 避免過度抽象 87 5.3 使用測試框架創建驗證領域模型的測試用例 87 5.3.1 創建測試項目 87 5.3.2 模擬對象的使用 91 5.3.3 對異常的測試 92 5.4 使用行為驅動設計工具SpecFlow驗證領域模型 93 5.4.1 行為驅動設計與領域驅動設計 94 5.4.2 使用SpecFlow驗證領域模型 94 5.5 創建控制臺應用驗證領域模型 98 5.6 領域模型發布 98 5.7 領域模型的演化與持續集成 102 5.8 本章小結 103 第6章 創建基于控制臺的人機游戲 104 6.1 已完成工作回顧 104 6.2 人機游戲說明 105 6.3 系統結構 105 6.4 創建應用層 106 6.5 模擬機器人作答 110 6.6 編寫客戶端 114 6.7 需要解決的問題 118 6.7.1 對象創建方式過于復雜 118 6.7.2 簡單工廠不能滿足擴展需求 119 6.7.3 應用層沒有隔離領域層 119 6.7.4 其他需要解決的問題 120 6.8 本章小結 121 第2部分 DDD .Net工具箱 第7章 DDD .Net相關技術概述 124 7.1 .Net簡介 124 7.1.1 .Net的發展簡史 124 7.1.2 .Net的版本 125 7.1.3 .Net的跨平臺支持 125 7.2 .Net功能 125 7.2.1 異步編程模式 125 7.2.2 特性 126 7.2.3 反射 128 7.2.4 委托 129 7.2.5 事件 131 7.2.6 泛型 132 7.2.7 LINQ 133 7.3 與領域驅動設計實現相關的技術框架 134 7.3.1 依賴注入框架 134 7.3.2 ORM框架 134 7.3.3 對象映射框架 135 7.3.4 實時通信框架 135 7.3.5 進程內消息框架 135 7.4 本章小結 136 第8章 依賴倒置原則、控制反轉與DDD架構 137 8.1 依賴倒置原則 137 8.1.1 概述 137 8.1.2 在設計中引入依賴倒置原則 138 8.1.3 設計期依賴與運行期依賴 140 8.1.4 依賴倒置實例 143 8.2 控制反轉 144 8.2.1 問題的提出 144 8.2.2 理解控制反轉 146 8.2.3 IoC容器 146 8.3 架構結構的轉變 146 8.4 本章小結 148 第9章 工廠與依賴注入容器 149 9.1 工廠 149 9.1.1 工廠的概念 149 9.1.2 工廠設計模式 150 9.2 依賴注入容器 151 9.2.1 問題的提出 152 9.2.2 理解依賴注入 152 9.3 .Net內置的依賴注入容器 153 9.3.1 基本使用方法 153 9.3.2 服務對象的生命周期 153 9.3.3 服務的注冊方法 154 9.3.4 多個構造函數的情況 156 9.4 依賴注入容器的使用 156 9.4.1 在控制臺應用中使用依賴注入 156 9.4.2 改造簡單工廠 157 9.4.3 可插拔組件架構實現 159 9.5 使用第三方DI容器滿足高級需求 159 9.5.1 基本使用方法 160 9.5.2 屬性注入 161 9.5.3 使用基于名稱的注入改造工廠 161 9.5.4 程序集注冊 163 9.6 本章小結 163 第10章 基于關系數據庫的存儲庫實現 164 10.1 EF Core的基本功能 164 10.2 使用EF Core實現存儲庫 167 10.2.1 創建PlayerRepository 167 10.2.2 創建GameRepository 170 10.3 EF Core的深入應用 173 10.3.1 多數據庫類型支持 173 10.3.2 生產環境的數據庫部署 178 10.3.3 數據庫生成標識 182 10.3.4 Data Annotations vs Flunt API 183 10.4 在控制臺應用中使用新的存儲庫 184 10.5 使用其他數據庫訪問框架實現存儲庫 185 10.5.1 存儲庫的持久層框架需要滿足的條件 185 10.5.2 Dapper 186 10.5.3 FreeSql 187 10.6 本章小結 187 第11章 存儲庫與NoSQL數據庫 188 11.1 NoSQL數據庫概述 188 11.1.1 鍵值對存儲數據庫 188 11.1.2 列存儲數據庫 188 11.1.3 文檔型數據庫 189 11.1.4 Graph數據庫 189 11.1.5 實時數據庫 189 11.2 文檔數據庫MongoDB概述 189 11.2.1 MongoDB介紹 189 11.2.2 MongoDB的安裝 190 11.2.3 MongoDB的管理 190 11.2.4 MongoDB的基本概念 191 11.2.5 MongoDB的基本數據類型 191 11.3 創建面向MongoDB的存儲庫 192 11.3.1 使用MongoDB.Driver操作MongoDB 192 11.3.2 創建存儲庫 194 11.3.3 使用依賴注入傳入MongoDB數據庫訪問對象 200 11.3.4 注意事項 201 11.4 聚合根在MongoDB中存儲與在關系數據庫中存儲的比較 202 11.5 本章小結 202 第12章 認證 203 12.1 基本概念 203 12.2 Asp.Net Core Identity 204 12.2.1 簡介 205 12.2.2 創建使用Identity的Web應用 205 12.2.3 集成Identity與詩詞游戲 207 12.2.4 Identity的配置 210 12.2.5 個性化Identity頁面 212 12.2.6 Identity的使用場景 214 12.3 基于OpenId Connect的認證服務 214 12.3.1 OAuth 2.0、OpenId和OpenId Connect介紹 214 12.3.2 使用Identity Server 4創建用戶管理和認證功能 215 12.3.3 使用Identity Server 4保護Web 應用 217 12.3.4 集成Identity Server 4與詩詞游戲 222 12.4 在實際項目中使用認證服務 222 12.4.1 單點登錄 222 12.4.2 前后端分離的應用 223 12.4.3 分布式應用 224 12.5 本章小結 225 第13章 領域事件實現 226 13.1 領域事件的工作過程 226 13.2 觀察者模式、中介者模式與訂閱/發布模式 229 13.2.1 觀察者模式 230 13.2.2 中介者模式 231 13.2.3 訂閱/發布模式 232 13.3 使用MediatR實現領域事件發布 233 13.3.1 引入MediatR 233 13.3.2 將領域事件封裝為MediatR消息 233 13.3.3 事件總線實現 234 13.3.4 事件的接收和處理實現 237 13.3.5 事件發布 239 13.4 外部事件發布與消息中間件 240 13.5 本章小結 246 第14章 應用層開發 247 14.1 應用層概述 247 14.1.1 應用服務 247 14.1.2 數據傳輸對象 247 14.1.3 工作單元 248 14.2 應用層創建示例 249 14.2.1 控制臺應用與Web應用的不同 249 14.2.2 創建新的應用層接口 252 14.2.3 應用層實現 255 14.3 創建應用層的Web API 257 14.4 引入工作單元 263 14.4.1 工作單元的定義 263 14.4.2 工作單元的實現 263 14.4.3 工作單元的使用 272 14.5 本章小結 272 第15章 使用Web API和gRPC實現限界上下文集成 273 15.1 直接訪問詩詞服務數據庫 273 15.2 使用Web API實現上下文集成 277 15.2.1 編寫詩詞服務的Web API 277 15.2.2 編寫訪問Web API的PoemService接口 280 15.2.3 測試Web API和客戶端 281 15.2.4 是否使用RESTful形式的Web API 283 15.3 使用gRPC實現限界上下文集成 284 15.3.1 RPC與gRPC 284 15.3.2 gRPC對.Net的支持 284 15.3.3 編寫gRPC PoemService服務 287 15.3.4 編寫gRPC PoemService客戶端 292 15.3.5 編寫驗證控制臺程序 294 15.3.6 編寫gRPC應用的其他注意事項 296 15.3.7 gRPC重試策略的配置 297 15.4 本章小結 298 第16章 使用消息實現限界上下文集成 299 16.1 限界上下文集成方案 299 16.1.1 消息中間件的使用 299 16.1.2 創建對外發布消息的接口 300 16.1.3 創建消息接收接口 302 16.1.4 消息接收程序 302 16.2 使用RabbitMQ實現限界上下文集成 304 16.2.1 編寫消息接收端 304 16.2.2 消息發布 307 16.2.3 在控制臺項目中使用配置文件 309 16.2.4 編寫接收端插件 310 16.2.5 RabbitMQ消息類型簡介 312 16.3 使用Kafka實現限界上下文集成 314 16.3.1 Kafka消息發送端的編寫 314 16.3.2 Kafka消息接收端的編寫 315 16.4 本章小結 318 第3部分 構建以領域模型為核心的應用 第17章 “戰略設計”與架構選擇 320 17.1 從業務出發規劃項目架構 320 17.1.1 問題的提出 320 17.1.2 戰略設計的作用 321 17.1.3 限界上下文之間的架構 322 17.2 示例項目的“戰略設計” 323 17.2.1 限界上下文的劃分 323 17.2.2 詩詞游戲上下文 323 17.2.3 用戶認證上下文 324 17.2.4 詩詞服務上下文 324 17.2.5 游戲管理上下文 324 17.3 與DDD相關的架構類型 324 17.3.1 分層架構 324 17.3.2 六邊形架構 324 17.3.3 洋蔥圈架構 325 17.3.4 整潔架構 326 17.4 使用架構描述、設計應用系統 327 17.4.1 總體架構 327 17.4.2 存儲庫 330 17.4.3 領域服務的擴展 331 17.4.4 領域事件發布 332 17.4.5 與其他限界上下文的集成 333 17.4.6 使用消息實現與其他限界上下文的集成 335 17.5 架構模型的總結 336 17.6 本章小結 337 第18章 構建Web單體應用 338 18.1 單體應用概述 338 18.2 需求細化 338 18.3 系統架構 340 18.4 應用層 341 18.5 使用SignalR創建實時服務 344 18.5.1 SignalR介紹 344 18.5.2 創建SignalR服務端 345 18.5.3 創建SignalR的JavaScript客戶端 347 18.5.4 創建Razor頁面 350 18.6 裝配依賴注入服務 353 18.7 運行效果和待解決的問題 354 18.8 本章小結 357 第19章 構建游戲服務 358 19.1 需求分析 358 19.2 項目搭建 360 19.3 編寫服務層 360 19.4 SignalR Hub的實現 365 19.5 定時器的引入 371 19.6 安全認證 374 19.7 使用依賴注入服務進行裝配 377 19.8 本章小結 378 第20章 單頁面客戶端 379 20.1 需求概述 379 20.2 技術方案 380 20.2.1 單頁面客戶端在架構中的位置 380 20.2.2 關鍵技術 381 20.3 前端項目構建 383 20.3.1 創建項目 383 20.3.2 使用oidc-client進行認證 386 20.3.3 訪問游戲服務的SignalR Hub 388 20.3.4 編寫客戶端邏輯 392 20.4 交互設計 393 20.4.1 交互設計原則 393 20.4.2 詩詞游戲的交互設計 394 20.4.3 運行效果 395 20.5 本章小結 398 第21章 使用.Net構建多種類型客戶端 399 21.1 概述 399 21.2 認證 400 21.2.1 IdentityModel.OidcClient介紹 400 21.2.2 控制臺應用的認證功能實現 401 21.2.3 WinForm應用認證功能實現 403 21.2.4 Android移動應用的認證功能實現 408 21.3 Web API的訪問 412 21.3.1 使用HttpClient訪問Web API 412 21.3.2 控制臺應用的Web API訪問 412 21.3.3 WinForm的Web API訪問 413 21.3.4 Android應用的Web API訪問 414 21.4 SignalR的訪問 415 21.4.1 SignalR的C#客戶端 415 21.4.2 控制臺應用訪問SignalR Hub 416 21.4.3 WinForm訪問SignalR Hub 417 21.4.4 Android App訪問SignalR 418 21.5 客戶端交互模式與應用服務 420 21.6 本章小結 420 第22章 微服務 421 22.1 微服務簡介 421 22.1.1 基本概念 421 22.1.2 微服務的優點 422 22.1.3 使用微服務的代價 422 22.1.4 一個沒有很好設計的微服務示例 423 22.2 微服務相關的技術 423 22.2.1 容器 424 22.2.2 微服務編排 424 22.2.3 微服務相關的其他技術 424 22.3 使用微服務架構的詩詞游戲 426 22.3.1 需求分析 426 22.3.2 后端實現 427 22.3.3 前端實現 431 22.3.4 使用Docker Compose創建容器 433 22.4 容器化部署 437 22.4.1 單頁面前端的容器化部署 437 22.4.2 Asp.Net Core項目的容器化部署 437 22.4.3 基礎設施的容器化部署 439 22.4.4 詩詞游戲的容器化部署 440 22.4.5 使用反向代理服務器整合應用的各個部分 441 22.5 持續集成 443 22.5.1 持續集成簡介 443 22.5.2 手工集成過程 443 22.5.3 使用Jenkins完成自動集成 445 22.6 本章小結 447 第23章 詩詞服務數據維護——非DDD技術的限界上下文 448 23.1 數據驅動開發簡介 448 23.2 詩詞服務數據維護的開發 449 23.3 數據驅動開發與DDD的比較 453 23.4 本章小結 455 第24章 游戲管理上下文的實現與CQS模式 456 24.1 游戲管理部分的設計 456 24.2 游戲管理部分的領域模型 457 24.2.1 領域模型定義 457 24.2.2 存儲庫的實現 459 24.3 查詢部分設計 462 24.3.1 查詢接口 462 24.3.2 查詢實現 468 24.4 游戲管理服務設計 469 24.5 游戲管理客戶端設計 472 24.6 CQRS簡介 473 24.7 本章小結 474 第25章 使用成熟的DDD技術框架 475 25.1 ABP和ABP vNext 475 25.1.1 ASP.NET Boilerplate(ABP) 475 25.1.2 ABP vNext 476 25.2 使用ABP vNext開發項目 476 25.3 使用輔助工具進行開發 478 25.4 使用技術框架開發的優勢和代價 479 25.5 如何使用技術框架 480 25.6 本章小結 480 第26章 系統提升與持續改進 481 26.1 模型對需求變化的適應性 481 26.1.1 游戲類型的增加 481 26.1.2 增加不同數據源的游戲類型 483 26.1.3 限制數據范圍 484 26.2 軟件升級時模型的修改 484 26.2.1 挖掘現有模型的潛力 484 26.2.2 引入新的領域概念 486 26.3 使用語音輸入對系統的影響 488 26.4 架構的持續改進 488 26.5 本章小結 491 后記 492 附錄A 本書使用的開發工具、開發環境介紹 494 A.1 Docker 494 A.2 Git 494 A.3 NuGet 495 A.4 xUnit 495 A.5 SpecFlow 495 A.6 MongoDB 495 A.7 MS SQL Server 496 A.8 RabbitMQ 496 A.9 Kafka 497 A.10 Jenkins 500 A.11 Identity Server 4 admin 500 附錄B 參考文獻 509 附錄C 本書代碼說明 511
展開全部

領域驅動設計.NET實踐 作者簡介

甄鐳,1992年同濟大學畢業獲學士學位,1995年北京科技大學畢業獲碩士學位。1996年開始從事企業信息系統開發和建設工作,涉及石化、政務、汽車制造、機械制造、電力、房地產等諸多領域。參與過的重大項目包括“金陵石化公司煉油廠NR-CIMS應用示范工程”(863科技攻關計劃項目)、“全國人大辦公資源信息系統”等。著有《信息系統升級與整合》、《.Net與設計模式》

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服