ABP框架入門

張飛洪[廈門]發表於2022-04-24

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

技術準備

在開始使用 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 建立解決方案。最後,我們配置、執行並瞭解了基礎的功能。
在下一章中,我們將瞭解解決方案的結構,並學習如何將我們自己的功能模組整合到這個啟動解決方案中。
 
 
 

相關文章