ABP 框架作为一组大型 NuGet 和节点包管理器(NPM)包分发。它采用模块化设计,因此您可以添加和使用所需的软件包。但是,也有一些预生成的解决方案模板,通常希望从它们开始。

我们将看到如何使用ABP的启动模板准备我们的开发环境和创建解决方案。在本章结束时, 您将拥有一个使用 ABP 框架构建的运行解决方案。

本章包括以下主题:

  • 安装 ABP CLI
  • 创建新解决方案
  • 运行解决方案
  • 探索预构建模块

技术要求

在开始使用 ABP Framework 之前,您需要在计算机上安装一些工具。

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 Framework 可以与任何数据源一起使用。但是,两个主要提供程序是预先集成的:Entity Framework Core (EF Core) 和 MongoDB。对于 EF Core,可以使用所有数据库管理系统 (DBMS),例如 SQL Server、MySQL、PostgreSQL、Oracle 等。

在本章中,我将使用 SQL Server 作为 DBMS。启动解决方案使用 LocalDB,这是一个随 Visual Studio 安装的供开发人员使用的简单 SQL Server 实例。但是,您可能希望使用完整版 SQL Server。在这种情况下,您可以从 https://www.microsoft.com/sql-server/sql-server-downloads 下载 SQL Server Developer Edition。

安装 ABP CLI

许多现代框架都提供 CLI,ABP Framework 也不例外。ABP CLI 是一个命令行实用程序,用于执行 ABP 应用程序的一些常见任务。它用于以 ABP Framework 为基本功能创建新的解决方案。

使用以下命令在终端中安装它:

 dotnet tool install -g Volo.Abp.Cli 

如果已安装它,可以使用以下命令将其更新到最新版本:

 dotnet tool update -g Volo.Abp.Cli 

我们现在已经准备好创建新的ABP解决方案。

创建新解决方案

ABP框架提供了一个预建的应用程序启动模板。有两种方法可以使用此模板创建新的解决方案(项目),我们现在将对此进行探讨。

下载启动解决方案

您可以直接从 https://abp.io/get-started 创建和下载解决方案。在此页上,如以下屏幕截图所示,您可以轻松选择用户界面 (UI) 框架、数据库提供程序和其他可用选项:

图 2.1 – 下载新解决方案

值得一提的是此页上的选项,因为它们直接影响解决方案的体系结构、结构和工具。

在“项目名称”字段中,是 Visual Studio 解决方案的名称(.sln文档)和代码库的根命名空间。

对于项目类型,有两个选项,如下所示:

  • 模块模板用于创建可重用的应用程序模块。
  • 应用程序模板用于使用ABP框架构建Web应用程序.

第 15 章 “使用模块化”将介绍使用模块模板。在这里,我选择了应用程序模板,因为我想创建一个新的 Web 应用程序,我们将在下一章中使用它。

在撰写本书时,有四个可用的 UI 框架选项,如下所示:

  • MVC/Razor Page
  • Angular
  • Blazor WebAssembly
  • Blazor Server

您可以选择最适合您的申请要求以及个人或团队技能的选项。我们将在本书的第 4 部分 用户界面和 API 开发中介绍 MVC/Razor Page 和 Blazor 选项。你可以在ABP的文档中了解更多关于Angular UI的信息。在这里,我选择 MVC/Razor 页面选项,因为我们将在下一章中使用它。

在撰写本书时,有两个数据库提供程序选项可用,如下所示:

  • Entity Framework Core
  • MongoDB

如果选择“实体框架核心”选项,则可以使用 EF Core 支持的任何 DBMS。我在此处选择了带有 SQLServer 选项的 EF Core。

ABP还提供了一个基于React Native的移动启动模板,React Native是Facebook提供的一种流行的单页应用程序(SPA)框架。如果您选择它,它为您的移动应用程序提供了一个很好的起点,该应用程序与同一后端集成。这本书没有涉及移动开发,所以我把它留作“无”。

最后,如果要将 UI 应用程序与 HTTP API 物理分离,则可以选中 Tiered 选项。在这种情况下,UI 应用程序不会有直接的数据库连接,而是通过 HTTP API 执行所有操作。您可以将 UI 和 HTTP API 应用程序部署到单独的服务器。我没有检查它以保持它更简单,并专注于 ABP 功能而不是分布式系统的复杂性.但是, ABP也支持这样的分布式场景.您可以从ABP的文档中了解更多信息.

当您选择这些选项时, ABP创建一个完全工作的, 生产就绪的解决方案, 在此基础上你可以开始构建你的应用程序.如果以后想要更改选项(例如,如果要使用 MongoDB 而不是 EF Core),则应重新创建解决方案或手动更改和配置 NuGet 包。在创建和自定义解决方案后,没有自动魔术方法来更改这些选项。

从网站下载解决方案可以轻松查看和选择选项。但是,对于喜欢命令行工具的用户,还有另一种方法。

使用 ABP CLI

或者, 您可以使用 ABP CLI 中的 new 命令来创建新的解决方案。

打开命令行终端,然后在空目录中键入以下命令:

 abp new ProductManagement 

ProductManagement 是此处的解决方案名称。此命令使用 EF Core 和 SQL Server LocalDB 和 MVC/Razor Pages 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"

此示例中的连接字符串已是默认连接字符串值,并使用 LocalDb。如果以后需要更改连接字符串,请参阅本章中的连接字符串部分。

有关所有可能的选项和值,请参阅 ABP CLI 文档: https://docs.abp.io/en/abp/latest/CLI

提示:在下一章中,我们将构建一个名为 ProductManagement 的示例应用程序。您可以使用当前正在创建的解决方案作为下一章的起点。

现在,我们有一个架构良好、可用于生产的解决方案。下一节介绍如何运行此解决方案。

运行解决方案

我们可以使用 IDE 或代码编辑器来打开解决方案、创建数据库并运行 Web 应用程序。在 Visual Studio 或你喜欢的 IDE 中打开ProductManagement.sln解决方案。您将看到如下所示的解决方案结构:

图 2.2 – Visual Studio 中的 ProductManagement 解决方案

该解决方案是分层的,包含多个项目。test 文档夹包含用于测试这些图层的项目。这些项目中的大多数是类库,而其中一些是可执行的应用程序。下面介绍了这些内容:

• ProductManagement.Web 是该解决方案的主要 Web 应用程序。

• ProductManagement.DbMigrator 用于应用数据库迁移并设定初始数据的种子。

该解决方案使用数据库。在创建数据库之前,您可能需要检查并更改数据库连接字符串。

连接字符串

连接字符串用于连接到数据库,通常包括服务器、数据库名称和凭据。连接字符串在 appsettings 中定义。ProductManagement.Web 和 ProductManagement 中的 json 文档。

DbMigrator 项目,如以下代码片段所示:

"ConnectionStrings": {
    "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=ProductManagement;Trusted_ Connection=True"
}

默认连接字符串使用 LocalDb(一种与 SQL Server 兼容的轻型数据库)进行开发。它安装在 Visual Studio 中。如果要连接到另一个 SQL Server 实例,可以对其进行更改。如果更改它,请在两个地方更改它。

在下一节中创建数据库时,将使用此连接字符串。

创建数据库

该解决方案使用 EF Core 代码优先数据库迁移。因此,我们可以使用标准的 Add-Migration 和 Update-Database 命令使用代码管理数据库架构更改。

ProductManagement.DbMigrator 是一个控制台应用程序,可简化在开发和生产中创建和迁移数据库的过程。它还为初始数据设定种子,创建管理员角色和用户以登录应用程序。

右键单击“ProductManagement.DbMigrator”项目,然后选择“设为启动项目”命令。然后,使用 Ctrl + F5 运行项目,以在不调试的情况下运行它。

如果使用的是 Visual Studio 以外的 IDE(例如 JetBrains Rider),则首次运行时可能会遇到问题,因为它会添加初始迁移并编译项目。在这种情况下,请在 ProductManagement.DbMigrator 项目的目录中打开命令行终端,然后执行 dotnet run 命令。下次,您可以像往常一样在 IDE 中运行它。

数据库已准备就绪,因此我们终于可以运行应用程序来浏览 UI。

运行 Web 应用程序

将 ProductManagement.Web 设置为启动项目,并使用 Ctrl + F5 运行它(启动时不调试)。

强烈建议在不调试的情况下运行应用程序,除非您需要调试它们,因为这会快得多。

这将打开一个登录页面,您可以在其中删除内容并构建自己的应用程序主页。单击“登录”按钮时,将重定向到登录页面,如以下屏幕截图所示:

图 2.3 – 应用程序的登录页面

默认用户名是 admin,默认密码是 1q2w3E*。您可以在登录应用程序后更改它。

ABP是一个模块化框架, 启动解决方案已经安装了基础模块.在开始构建应用程序之前,最好先浏览一下预构建的模块功能。

预构建模块

本部分将探讨启动解决方案中预安装的基本模块:帐户、标识和租户管理。

默认情况下,这些模块的源代码不包含在下载解决方案中,但它们可以在 GitHub 上免费获得。它们用作 NuGet 包,并在发布新的 ABP 版本时轻松升级.它们被设计为高度可定制的,无需触及其代码。但是,如果需要,可以将其源代码包含在解决方案中,以便根据您的独特要求自由更改它们。

让我们从帐户模块开始,它提供了用户身份验证功能。

帐户模块

图 2.3 中所示的登录页面来自 Account 模块。该模块实现了登录、注册、忘记密码功能、社交登录和其他一些常见要求。它还显示了一个租户选择区域,用于在多租户应用程序的开发环境中的租户之间切换。第 16 章 “实现多租户”中将介绍多租户,因此我们将再次返回此屏幕。

登录后,您将看到一个包含几个子菜单项的管理菜单项。这些菜单项带有ABP预先构建的身份和租户管理模块.

标识模块

Identity 模块用于管理应用程序中的用户、角色及其权限。它在“管理”菜单下添加了一个“身份管理”菜单项,其中“角色”和“用户”作为其子菜单项,如以下屏幕截图所示:

图 2.4 – 身份管理菜单

如果单击“角色”菜单项,将打开角色管理页面,如以下屏幕截图所示:

图 2.5 – 角色管理页面

在此页面上,您可以管理应用程序中的角色及其权限。在ABP中,角色是一组权限.将角色分配给用户以授权他们。图 2.5 中的 Default 徽章表示默认角色。当新用户向系统注册时,默认角色会自动分配给新用户。我们将返回到第 7 章“探索跨领域问题”的“使用授权和权限系统”部分中的“角色”页面。

另一方面,“用户”页用于管理应用程序中的用户。一个用户可以有零个或多个角色。

角色和用户几乎在所有业务应用程序中都是非常标准的,而租户管理页面模块仅用于多租户系统。

租户管理模块

租户管理模块用于在多租户系统中创建和管理租户。在多租户应用程序中,租户是具有与其他租户隔离的自己的数据(包括角色、用户和权限)的客户。它是构建软件即服务 (SaaS) 解决方案的一种高效且常用的方法。如果应用程序不是多租户,则可以从解决方案中删除此模块。

租户管理模块和多租户将在第 16 章 “实施多租户”中介绍。

总结

在本章中,我们安装了一些必要的工具来准备我们的开发环境。然后,我们看到了如何使用直接下载和 CLI 选项创建新解决方案。最后,我们配置并运行应用程序以探索预构建的功能。

在下一章中,我们将通过了解解决方案结构来学习如何将我们自己的功能添加到此启动解决方案中。

 

posted on 2024-06-06 17:24  生活的倒影  阅读(25)  评论(0编辑  收藏  举报