ABP框架通過遵循軟件開發(fā)最佳實踐和約定的方式,為構(gòu)建現(xiàn)代Web應(yīng)用程序提供了完整的基礎(chǔ)設(shè)施。ABP框架是一個上層應(yīng)用框架,擁有豐富的生態(tài),可以幫助開發(fā)者實現(xiàn)DRY(Don’t Repeat Yourself)原則,并使其專注于編寫業(yè)務(wù)代碼。
本書由ABP框架項目的領(lǐng)導(dǎo)者撰寫,能夠幫助讀者從零開始全面了解ABP框架和現(xiàn)代Web應(yīng)用程序開發(fā)技術(shù)。通過逐步講解基本概念和真實案例,讀者將了解現(xiàn)代Web解決方案的需求,以及如何使用ABP框架方便地開發(fā)自己的解決方案。本書還將介紹企業(yè)級應(yīng)用程序開發(fā)中的一些通用需求和ABP框架提供的基礎(chǔ)設(shè)施組件。通過本書,讀者將掌握構(gòu)建可維護的模塊化Web解決方案的最佳實踐。
閱讀完本書,讀者將能夠創(chuàng)建一個完整且易于開發(fā)、維護和測試的Web解決方案。
目標(biāo)讀者
本書面向想要學(xué)習(xí)軟件架構(gòu)和最佳實踐、使用微軟技術(shù)和ABP框架構(gòu)建可維護的Web解決方案的開發(fā)人員。在閱讀本書前,讀者需要具有C#和ASP.NET Core相關(guān)的基礎(chǔ)知識。
內(nèi)容結(jié)構(gòu)
本書分為5部分,共17章,主要內(nèi)容包括:
第1章討論開發(fā)業(yè)務(wù)應(yīng)用程序面臨的常見挑戰(zhàn)性問題,并闡述ABP框架如何解決這些挑戰(zhàn)性問題。
第2章探討如何使用ABP框架創(chuàng)建和運行一個新的解決方案。
第3章是本書最長的一章,通過逐步創(chuàng)建一個完整的應(yīng)用程序,介紹如何使用ABP框架開發(fā)應(yīng)用程序。這一章基本上集合了本書的大部分內(nèi)容。通過閱讀這一章,雖然可能無法理解ABP框架的所有特性,但是可以使用ABP框架的基本組件創(chuàng)建自己的應(yīng)用程序,從而大致地了解ABP框架的功能。然后可以通過閱讀后續(xù)章節(jié)深入地理解ABP框架的所有技術(shù)細(xì)節(jié)。
第4章介紹EventHub解決方案的結(jié)構(gòu)和架構(gòu)。這是專門為本書創(chuàng)建的一個大型示例應(yīng)用程序。建議讀者閱讀這一章時,在自己的開發(fā)環(huán)境中運行該解決方案。
第5章探討一些基本的概念,如依賴注入、模塊化、配置和日志。這些概念對理解與使用ABP框架和ASP.NET Core進行應(yīng)用程序開發(fā)是必不可少的。
第6章介紹實體、倉儲和工作單元的概念,并探討如何使用Entity Framework Core和MongoDB。這一章還將介紹查詢數(shù)據(jù)、操作數(shù)據(jù)及控制數(shù)據(jù)庫事務(wù)的不同方法。
第7章重點介紹應(yīng)用程序中需要關(guān)注的3個問題: 授權(quán)、驗證和異常處理。應(yīng)用程序中的每個部分基本都需要關(guān)注這些問題。這一章將探討如何使用基于權(quán)限的授權(quán)系統(tǒng)、驗證用戶輸入及處理異常和異常信息。
第8章介紹一些ABP框架中的常用功能,如獲取當(dāng)前用戶的信息、數(shù)據(jù)過濾和審計日志、數(shù)據(jù)緩存和本地化。
第9章是DDD部分的第1章。首先闡述DDD的概念,并基于DDD構(gòu)建了一個.NET解決方案; 然后探討如何把DDD標(biāo)準(zhǔn)的四層解決方案模型演變?yōu)锳BP框架中的啟動模板解決方案的結(jié)構(gòu); 此外,還將介紹DDD的構(gòu)件和原理。
第10章將繼續(xù)介紹DDD中的領(lǐng)域?qū)。首先介紹EventHub的領(lǐng)域?qū)ο螅缓筇接懭绾卧O(shè)計聚合,實現(xiàn)領(lǐng)域服務(wù)、倉儲和規(guī)約,以及使用事件總線發(fā)布領(lǐng)域事件。
第11章重點介紹DDD中的應(yīng)用層。這一章將介紹設(shè)計和驗證數(shù)據(jù)傳輸對象及實現(xiàn)應(yīng)用服務(wù)的最佳實踐,還將探討領(lǐng)域?qū)雍蛻?yīng)用層的職責(zé)。
第12章介紹MVC(Razor Pages)應(yīng)用程序開發(fā)技術(shù),它是一種在服務(wù)器端生成HTML的技術(shù)。這一章將探討ABP框架實現(xiàn)的主題系統(tǒng),以及提供的一些其他功能,如打包、壓縮、自定義標(biāo)簽、表單、菜單和模態(tài)框; 還將介紹如何在客戶端調(diào)用服務(wù)器端的API,以及如何使用ABP框架提供的JavaScript API展示通知和消息框等。
第13章與第12章類似,介紹如何使用微軟的Blazor框架和ABP框架進行UI開發(fā)。Blazor是一個很好的框架,使開發(fā)者可以在.NET平臺上開發(fā)運行在瀏覽器上的應(yīng)用程序。ABP框架擴展了Blazor框架,提供了訪問HTTP API的解決方案,實現(xiàn)了主題系統(tǒng),并提供了一些常用的服務(wù)來簡化UI的開發(fā)工作。
第14章探討如何使用ASP.NET Core和ABP框架的自動API控制器系統(tǒng)創(chuàng)建API控制器,并討論何時需要手動定義控制器。這一章將介紹動態(tài)和靜態(tài)C#代理,它能夠自動地從.NET客戶端調(diào)用服務(wù)器端定義的基于ABP框架的HTTP服務(wù); 還將探討在ABP框架中使用SignalR的方法。
第15章通過一個示例介紹可復(fù)用應(yīng)用模塊的開發(fā)過程。這一章將為EventHub解決方案創(chuàng)建一個支付模塊,并闡述該模塊的結(jié)構(gòu)。通過這種方式,讀者將了解如何開發(fā)可重用模塊并把它們安裝到應(yīng)用程序中。
第16章重點介紹ABP框架提供的另外一個架構(gòu)——多租戶,這是一種用于構(gòu)建軟件即服務(wù)(SoftwareasaService,SaaS)解決方案的架構(gòu)模式。這一章將探討是否要在解決方案中使用多租戶,以及如何編寫與ABP框架的多租戶系統(tǒng)兼容的代碼; 還將介紹ABP框架的功能系統(tǒng),在多租戶解決方案中,該系統(tǒng)用于把應(yīng)用程序功能定義為特性,并把它們分配給租戶。
第17章介紹ABP框架提供的測試基礎(chǔ)設(shè)施,以及如何使用xUnit測試框架為應(yīng)用程序編寫單元測試和集成測試。這一章將介紹一些關(guān)于自動化測試的基礎(chǔ)知識(如斷言、模擬數(shù)據(jù)和替換服務(wù))及處理異常的方法。