之前公司一直使用的是ASP.NET Boilerplate (ABP),但是當解決方案變得很大時,專案啟動就變得非常慢,雖然也想了一些辦法,將一些基礎模組做成Nuget包的形式,讓整個解決方案去參照。但是整個專案還是很臃腫,各個專案之間的耦合性太強,很難將其拆開;無法進行微服務的部署,擴充套件性差。之後,選擇,Abp的vnext版本,優點:
1. 其新的ABP框架可方便的開發微服務並使它們相互通訊。亦可作為微服務單獨部署,或者可以嵌入到單個應用程式中;
2. 模組化。最明顯的就是更加模組化,使專案更加清晰明瞭,設計更合理;
3. 更多可延伸性。新的ABP框架為內建服務提供了更多的擴充套件點和覆蓋的能力;
4. 支援關係型和非關係型資料庫,Redis作為分散式快取,使用RabbitMQ作為事件匯流排的訊息處理方式,使用Quartz/HangFire作為定時任務的處理,引入可了IdentityServer4服務;
接下來呢,會從 https://abp.io/上下載 官網構建一個名為 Acme.BookStore 的用於管理書籍及其作者列表的ABP應用程式
2、官網的程式碼放在github上,點選abp-samples,就可以看到它的所有解決方案,BookStore-Mvc-EfCore 就是我們今天要更改的解決方案
3、使用Git工具克隆本專案
git clone https://github.com/abpframework/abp-samples.git
4、稍等一段時間後,使用VS Code開啟本專案(VS 2019不支援,想使用的升級到VS 2022),在工具中新增 vscode-solution-explorer 元件
5、點選解決方案,右鍵選擇Build,對專案進行包還原,從解決方案的結構上看,就能看到其清晰的分層,解決方案中的專案及依賴關係.
6、接下來點選Acme.BookStore.EntityFrameworkCore,找到它的Acme.BookStore.EntityFrameworkCore.csproj檔案,更換Nuget包,解決方案之前使用的是SQLServer,要將其更改為Mysql,之後找到BookStoreDbContextFactory和BookStoreEntityFrameworkCoreModule檔案,更改其參照的地方
7、重新修改資料庫連線字串,並刪除Migrations資料夾下的檔案
找到*.Web 和 *.DbMigrator中的appsettings.json檔案對資料庫連線字串進行修改
"Default": "Server=localhost;Port=3306;Database=資料庫名字;Uid=root;Pwd=資料庫密碼;Convert Zero DateTime=True"
8、在*.EntityFrameworkCore目錄下執行命令進行資料庫遷移,之後就可以在資料庫中看到所有的表
dotnet ef migrations add Init
dotnet ef database update
9、所有準備都已完成,執行應用程式,選中*.web,右鍵點選Run,報錯啟動不了,通過查詢,發現在wwwroot下沒有libs檔案
Could not find the bundle file '/libs/abp/core/abp.css' for the bundle 'LeptonXLite.Global'!
安裝ABP CLI, 用於自動執行基於 ABP 的解決方案的一些常見任務
dotnet tool install -g Volo.Abp.Cli
之後安裝libs
abp install-libs
再次進行Run,成功啦!!以admin作為使用者名稱和1q2w3E* 作為密碼登入到應用程式,登入成功後,就可以看到書籍管理功能