ABP框架入門

本文適合初級開發人員,不適合老手在上面浪費時間,希望能幫新人起到一個引導的作用。

技術準備

在開始使用 ABP 框架之前,您需要在計算機上安裝一些工具。

IDE/編輯器

本書假設您使用的是Visual Studio 2022(支持 .NET 6.0 的 v10.0)或更高版本。如果你還沒安裝,社區版在https://visualstudio.microsoft.com上免費提供。當然,你也可以使用你喜歡的集成開發環境IDE)或編輯器,只要它支持使用 C# 進行 .NET 程序開發。

.NET 6 SDK

如果你已經安裝Visual Studio,你也會同時安裝.NET 軟件開發工具包 (SDK)。否則,請從https://dotnet.microsoft.com/download安裝 .NET 6.0 或更高版本。

數據庫準備

ABP 框架可以與任何數據源對接。目前已預先集成:Entity Framework Core(EF Core) 和MongoDB。對於 EF Core,支持所有數據庫管理系統(DBMS ),例如如 SQL ServerMySQLPostgreSQLOracle 等。
在本章中,我將使用SQL Server作爲 DBMS。啓動解決方案使用LocalDB(一個簡單的 SQL Server 實例,適用於安裝了 Visual Studio 的開發人員)。但是,您可以想使用完整版的 SQL Server。如果你想使用完整版的SQL Server,您可以從https://www.microsoft.com/sql-server/sql-server-downloads下載SQL Server Developer Edition

安裝 ABP CLI

大部分主流的框架都會提供了 CLI,ABP 框架也不例外。ABP CLI是一個命令行工具,它可以爲 ABP 應用程序執行一些常見任務。比如,創建以 ABP 框架爲基礎的新解決方案。
通過終端,輸入以下命令安裝它:
dotnet tool install -g Volo.Abp.Cli
如果您已經安裝了它,您可以使用以下命令將其更新到最新版本:
dotnet tool update -g Volo.Abp.Cli

創建新解決方案

ABP 框架提供一個預構建的應用程序啓動模板。有兩種方法可以使用此模板創建新解決方案(Solution)。

官網配置和下載

您可以直接從https://abp.io/get-started創建和下載解決方案。在這個頁面上,如圖,您可以輕鬆選擇用戶界面(UI) 框架、數據庫提供程序和其他可用選項:


值得一提的是此頁面上的選項,不同的配置會影響到不同的架構、結構和工具。
  • Project name是 Visual Studio 解決方案(.sln文件)的名稱,也是項目的根命名空間。
  • 對於Project type,有兩個選項,如下所示:
    • Module模板用於創建可重用的應用模塊。
    • Application模板用於構建 Web 應用程序。
模塊模板的詳情將在[第 15 章] 使用模塊化中介紹。在這裏,我選擇了應用程序模板,因爲我想創建一個新的 Web 應用程序,我們將在下一章中使用它。
截止目前,有四個UI 框架選項可用,如下所示:
  • MVC/Razor Page
  • Angular
  • Blazor WebAssembly
  • Blazor Server
    您可以選擇最適合您的應用要求。我們將在本書的第 4 部分,用戶界面和 API 開發中介紹MVC/Razor 頁面Blazor選項。您可以在 ABP 的官方文檔中瞭解有關 Angular UI 的更多信息。在這裏,我選擇MVC/Razor Page選項作爲示例。
目前,有兩個可用的數據庫提供程序選項,如下所示:
  • Entity Framework Core
  • MongoDB
如果選擇Entity Framework Core選項,則可以使用 EF Core 支持的任何 DBMS。我在這裏選擇了帶有SQLServer選項的 EF Core。
ABP 還提供基於React Native的移動模板,一個由Facebook 提供的流行單頁應用程序(SPA) 框架。這本書暫不涉及移動開發,所以我將其保留爲None
最後,如果您想將您的 UI 與HTTP API做物理分離,可以選中分層選項。在這種情況下,UI 將沒有直接的數據庫連接,它通過 HTTP API 執行調用。你可以將 UI 和 HTTP API 分開部署。這裏我們使用單體架構而不是分佈式系統,雖然ABP 也支持這種分佈式場景。
當您選擇完這些選項後,ABP 會創建一個完全可用的生產級別的解決方案,您可以在此基礎上開始構建您的應用程序。如果您稍後想要更改選項(例如,如果您想要使用 MongoDB 而不是 EF Core),您應該重新創建您的解決方案或手動配置相關 NuGet 包,目前沒有自動更改這些選項的方法。
除了從網站下載您的解決方案,對於喜歡命令行工具的用戶來說,還有另一種方法。

使用 ABP CLI

您可以使用ABP CLI 中的new命令創建新的解決方案。打開命令行終端並在空目錄中鍵入以下命令:
abp new ProductManagement
ProductManagement是解決方案名稱。此命令默認使用帶有 EF Core 的 SQL Server LocalDB 和 MVC/Razor 頁面 UI 創建 Web 應用。如果我想指定選項,我可以重寫相同的命令,如下所示:
abp new ProductManagement -t app -u mvc -d ef -dbms SqlServer --mobile none
如果要指定數據庫連接字符串,也可以傳遞--connection-string參數,如下例所示:
abp new ProductManagement -t app -u mvc -d ef -dbms SqlServer --mobile none --connection-string "Server=(LocalDb)\\MSSQLLocalDB;Database=ProductManagement;Trusted_Connection=True"
我們現在擁有一個架構完善、可用於生產的解決方案ProductManagement。下一節將展示如何運行此解決方案。

運行解決方案

我們使用 Visual Studio 或代碼編輯器打開解決方案ProductManagement.sln、創建數據庫並運行 Web 應用程序。您將看到如下圖所示的解決方案結構:
該解決方案是包含多個項目的分層結構。測試文件夾包含測試這些對應層的項目。這些項目中有一些是類庫,有一些是可執行應用程序:
  • ProductManagement.Web是 Web 應用程序。
  • ProductManagement.DbMigrator用於應用數據庫遷移和種子數據初始化。
在創建數據庫之前,您可能需要檢查並更改數據庫連接字符串。

連接字符串

連接字符串在ProductManagement.WebProductManagement.DbMigrator項目的appsettings.json文件中定義,包括服務器、數據庫名稱和憑據。如以下代碼片段所示:
"ConnectionStrings": {
  "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=ProductManagement;Trusted_Connection=True"
}
默認連接字符串使用LocalDb,一個輕量級、與 SQL Server 兼容的數據庫。它安裝在 Visual Studio 中。如果要連接到另一個 SQL Server 實例,需要更改連接字符串。

創建數據庫

該解決方案使用 EF Core 的 Code First 進行數據庫遷移。因此,我們可以使用標準Add-MigrationUpdate-Database命令來管理數據庫更改。
ProductManagement.DbMigrator是一個控制檯應用程序,可簡化在開發和生產環境中創建和遷移數據庫。它還提供數據初始化,比如創建默認登錄使用到的admin用戶和角色。
右鍵單擊該ProductManagement.DbMigrator項目並選擇設置爲啓動項目命令。然後,使用Ctrl+F5運行項目,無需調試即可運行。
 
關於初始遷移
如果您使用的是 Visual Studio 以外的 IDE(例如 JetBrains Rider),則首次運行可能會遇到問題。在這種情況下,可以在項目ProductManagement.DbMigrator目錄中打開一個命令行終端並執行dotnet run命令。下次,您就可以像往常一樣在 IDE 中運行它。
數據庫已經準備好了,我們可以運行應用程序來查看界面 UI了。

運行 Web 應用程序

設置ProductManagement.Web爲啓動項目,並使用Ctrl+F5運行它(無需調試即可啓動)。
溫馨提示:Ctrl+F5,不調試運行
除非調試它們,否則強烈建議在不調試的情況下運行應用程序,因爲這樣會快得多。
接着會打開一個登錄頁面,如以下屏幕截圖所示:

默認用戶名是admin,默認密碼是1q2w3E*。可以在登錄之後進行更改。
ABP 是一個模塊化框架,啓動解決方案已經安裝了基礎模塊。在開始構建您的應用程序之前,最好先探索一下預構建的模塊功能。

瞭解預構建模塊

接下來將簡單瞭解一下解決方案中預安裝的模塊:AccountIdentityTenant Management
這些模塊的源碼可在 GitHub 上免費找到,在NuGet上也可以獲取最新發布的版本。若非必要,我們其實無需接觸源碼,因爲它們是高度可擴展和可定製的。當然,您也可以將它們的源代碼包含在解決方案中,方便自己自由更改它們。
下面讓我們從用戶身份驗證的 Account 模塊開始。

賬戶模塊

該模塊實現了登錄、註冊、忘記密碼等功能。它還顯示了一個租戶選擇,用於在多租戶的開發環境中切換租戶。多租戶將在[第 16 章] 實現多租戶中詳細介紹。
當您登錄完成後,您將看到一個帶有子菜單的管理項。這些菜單項是 ABP 預構建的身份租戶管理模塊。

身份模塊

身份模塊用於管理用戶、角色及其權限應用。它在Administration菜單下添加了一個Identity management菜單項,其中RolesUsers是它的子菜單,如下圖所示:
如果您單擊“角色”菜單項,則會打開角色管理頁面,如下圖所示:
在此頁面上,您可以管理應用程序中的角色及權限。在 ABP 中,角色是一組權限,角色是分配給用戶的。圖中的Default表示默認角色。當新用戶註冊到系統時,會自動分配給他們默認角色。
另外,一個用戶可以有零個或多個角色。
角色和用戶幾乎在所有應用程序中都是相當標準的,這裏不做贅述。

租戶管理模塊

租戶管理模塊是您在多租戶系統中創建和管理租戶的地方。在多租戶中,租戶與其他租戶的數據是完全隔離的(包括角色、用戶和權限)。如果你的應用程序不想要多租戶,您可以從解決方案中刪除此模塊。

概括

在本文中,我們準備了一些必要的開發工具和開發環境。然後,我們瞭解瞭如何在官網直接下載解決方案和使用ABP CLI 創建解決方案。最後,我們配置、運行並瞭解了基礎的功能。
在下一章中,我們將瞭解解決方案的結構,並學習如何將我們自己的功能模塊集成到這個啓動解決方案中。
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章