ABP框架入门

article/2025/4/24 21:54:06

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

本文适合初级开发人员,不适合老手在上面浪费时间,希望能帮新人起到一个引导的作用。

技术准备

在开始使用 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) 框架、数据库提供程序和其他可用选项:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XyJ7lrpq-1650775484778)(https://git.kancloud.cn/repos/jackyfei/test/raw/d165e29b7d82d4d83a7ebee17cab65f94251728f/images/screenshot_1650245606570.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTA4MDcwMTUsImlhdCI6MTY1MDc2MzgxNSwicmVwb3NpdG9yeSI6ImphY2t5ZmVpXC90ZXN0IiwidXNlciI6eyJ1c2VybmFtZSI6ImphY2t5ZmVpIiwibmFtZSI6Ilx1NWYyMFx1OThkZVx1NmQyYSIsImVtYWlsIjoiNDE2OTY4MjNAcXEuY29tIiwidG9rZW4iOiI2NTgzYjUwNjhjYzBiODI5OTJiNjIwZTg3MzBlNjg0MSIsImF1dGhvcml6ZSI6eyJwdWxsIjp0cnVlLCJwdXNoIjp0cnVlLCJhZG1pbiI6dHJ1ZX19fQ.JmDQCkcgunjr6aRChRLZRj9vzaStu_Ik0FyxDAxhHpw)]值得一提的是此页面上的选项,不同的配置会影响到不同的架构、结构和工具。

  • 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 应用程序。您将看到如下图所示的解决方案结构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HEIc0WUU-1650775484781)(https://git.kancloud.cn/repos/jackyfei/test/raw/d165e29b7d82d4d83a7ebee17cab65f94251728f/images/screenshot_1650247176112.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTA4MDcwMTUsImlhdCI6MTY1MDc2MzgxNSwicmVwb3NpdG9yeSI6ImphY2t5ZmVpXC90ZXN0IiwidXNlciI6eyJ1c2VybmFtZSI6ImphY2t5ZmVpIiwibmFtZSI6Ilx1NWYyMFx1OThkZVx1NmQyYSIsImVtYWlsIjoiNDE2OTY4MjNAcXEuY29tIiwidG9rZW4iOiI2NTgzYjUwNjhjYzBiODI5OTJiNjIwZTg3MzBlNjg0MSIsImF1dGhvcml6ZSI6eyJwdWxsIjp0cnVlLCJwdXNoIjp0cnVlLCJhZG1pbiI6dHJ1ZX19fQ.JmDQCkcgunjr6aRChRLZRj9vzaStu_Ik0FyxDAxhHpw)]
该解决方案是包含多个项目的分层结构。测试文件夹包含测试这些对应层的项目。这些项目中有一些是类库,有一些是可执行应用程序:

  • 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,不调试运行

除非调试它们,否则强烈建议在不调试的情况下运行应用程序,因为这样会快得多。
接着会打开一个登录页面,如以下屏幕截图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DcoQMhPS-1650775484782)(https://git.kancloud.cn/repos/jackyfei/test/raw/d165e29b7d82d4d83a7ebee17cab65f94251728f/images/screenshot_1650248152606.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTA4MDcwMTUsImlhdCI6MTY1MDc2MzgxNSwicmVwb3NpdG9yeSI6ImphY2t5ZmVpXC90ZXN0IiwidXNlciI6eyJ1c2VybmFtZSI6ImphY2t5ZmVpIiwibmFtZSI6Ilx1NWYyMFx1OThkZVx1NmQyYSIsImVtYWlsIjoiNDE2OTY4MjNAcXEuY29tIiwidG9rZW4iOiI2NTgzYjUwNjhjYzBiODI5OTJiNjIwZTg3MzBlNjg0MSIsImF1dGhvcml6ZSI6eyJwdWxsIjp0cnVlLCJwdXNoIjp0cnVlLCJhZG1pbiI6dHJ1ZX19fQ.JmDQCkcgunjr6aRChRLZRj9vzaStu_Ik0FyxDAxhHpw)]默认用户名是admin,默认密码是1q2w3E*。可以在登录之后进行更改。
ABP 是一个模块化框架,启动解决方案已经安装了基础模块。在开始构建您的应用程序之前,最好先探索一下预构建的模块功能。

了解预构建模块

接下来将简单了解一下解决方案中预安装的模块:AccountIdentityTenant Management
这些模块的源码可在 GitHub 上免费找到,在NuGet上也可以获取最新发布的版本。若非必要,我们其实无需接触源码,因为它们是高度可扩展和可定制的。当然,您也可以将它们的源代码包含在解决方案中,方便自己自由更改它们。
下面让我们从用户身份验证的 Account 模块开始。

账户模块

该模块实现了登录、注册、忘记密码等功能。它还显示了一个租户选择,用于在多租户的开发环境中切换租户。多租户将在[第 16 章] 实现多租户中详细介绍。
当您登录完成后,您将看到一个带有子菜单的管理项。这些菜单项是 ABP 预构建的身份租户管理模块。

身份模块

身份模块用于管理用户、角色及其权限应用。它在Administration菜单下添加了一个Identity management菜单项,其中RolesUsers是它的子菜单,如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DcwZ3Olx-1650775484783)(https://git.kancloud.cn/repos/jackyfei/test/raw/d165e29b7d82d4d83a7ebee17cab65f94251728f/images/screenshot_1650248350220.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTA4MDcwMTUsImlhdCI6MTY1MDc2MzgxNSwicmVwb3NpdG9yeSI6ImphY2t5ZmVpXC90ZXN0IiwidXNlciI6eyJ1c2VybmFtZSI6ImphY2t5ZmVpIiwibmFtZSI6Ilx1NWYyMFx1OThkZVx1NmQyYSIsImVtYWlsIjoiNDE2OTY4MjNAcXEuY29tIiwidG9rZW4iOiI2NTgzYjUwNjhjYzBiODI5OTJiNjIwZTg3MzBlNjg0MSIsImF1dGhvcml6ZSI6eyJwdWxsIjp0cnVlLCJwdXNoIjp0cnVlLCJhZG1pbiI6dHJ1ZX19fQ.JmDQCkcgunjr6aRChRLZRj9vzaStu_Ik0FyxDAxhHpw)]
如果您单击“角色”菜单项,则会打开角色管理页面,如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N89eXVbw-1650775484784)(https://git.kancloud.cn/repos/jackyfei/test/raw/d165e29b7d82d4d83a7ebee17cab65f94251728f/images/screenshot_1650248361502.png?access-token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NTA4MDcwMTUsImlhdCI6MTY1MDc2MzgxNSwicmVwb3NpdG9yeSI6ImphY2t5ZmVpXC90ZXN0IiwidXNlciI6eyJ1c2VybmFtZSI6ImphY2t5ZmVpIiwibmFtZSI6Ilx1NWYyMFx1OThkZVx1NmQyYSIsImVtYWlsIjoiNDE2OTY4MjNAcXEuY29tIiwidG9rZW4iOiI2NTgzYjUwNjhjYzBiODI5OTJiNjIwZTg3MzBlNjg0MSIsImF1dGhvcml6ZSI6eyJwdWxsIjp0cnVlLCJwdXNoIjp0cnVlLCJhZG1pbiI6dHJ1ZX19fQ.JmDQCkcgunjr6aRChRLZRj9vzaStu_Ik0FyxDAxhHpw)]
在此页面上,您可以管理应用程序中的角色及权限。在 ABP 中,角色是一组权限,角色是分配给用户的。图中的Default表示默认角色。当新用户注册到系统时,会自动分配给他们默认角色。
另外,一个用户可以有零个或多个角色。
角色和用户几乎在所有应用程序中都是相当标准的,这里不做赘述。

租户管理模块

租户管理模块是您在多租户系统中创建和管理租户的地方。在多租户中,租户与其他租户的数据是完全隔离的(包括角色、用户和权限)。如果你的应用程序不想要多租户,您可以从解决方案中删除此模块。

概括

在本文中,我们准备了一些必要的开发工具和开发环境。然后,我们了解了如何在官网直接下载解决方案和使用ABP CLI 创建解决方案。最后,我们配置、运行并了解了基础的功能。
在下一章中,我们将了解解决方案的结构,并学习如何将我们自己的功能模块集成到这个启动解决方案中。

+## (_)打个赏喝个咖啡(_)

微信支付


http://chatgpt.dhexx.cn/article/n1QMAJHP.shtml

相关文章

Abp v2.8.0发布 路线图

ABP框架和ABP商业版v2.8已经发布.这篇文章将涵盖这些发布中的新增内容和项目的中期路线图. ABP框架2.8有哪些新增内容? 你可在GitHub的发行说明中看到所有的变更.这篇博客只包括重要的一些功能/变更. SignalR集成包 我们已经发布了一个新的包用来集成SignalR到基于ABP框架应用…

Abp 业务异常源码解读

Abp 业务异常源码解读 最近一直在读代码整洁之道,我在读到第三章函数的3.9 使用异常替代返回错误码,其实在我的开发经历中都是使用返回错误码给到前端,之前在阅读ABP官网文档中就有看到过使用异常替代异常的做法,当时自己还是比较…

abp快速入门#3

abp快速入门#3 使用AbpHelper.CLI快速实现crud 使用AbpHelper.CLI快速实现crud https://github.com/EasyAbp/AbpHelper.CLI 按照使用说明安装abphelper dotnet tool install -g EasyAbp.AbpHelper参照例子创建Todo实体对象。 执行abphelper自动生成代码,-d 参数为…

abp官网下载的项目如何跑起来

目录 前言 一、pandas是什么? 二、使用步骤 1.下载项目 2.解压压缩包运行文件 3.在项目路径里面找到这两个文件,把数据库位置写上去,例如本地就local host 4.在工具里面找到程序包管理控制台 5.运行成功 6.设置启动项 7.运行成功就会有相…

【转】ABP源码分析三十三:ABP.Web

ABP.Web模块并不复杂,主要完成ABP系统的初始化和一些基础功能的实现。 AbpWebApplication : 继承自ASP.Net的HttpApplication类,主要完成下面三件事 一,在Application_Start完成AbpBootstrapper的初始化。整个ABP系统的初始化就是通过AbpBoo…

ABP学习 之 准备

学习ABP准备 ABP准备数据库准备后端启动前端启动 ABP准备 到ABP官网下载Free Template 将下载到的压缩包解压到目录 由于当时选择使用vue为前端,所以vue子目录是前端代码,aspnet-core为后端代码 数据库准备 准备一个数据库,设置好用户的o…

LoRa及LoRaWAN简介

目录 1、什么是LoRa和LoRaWAN 1.1 LoRa和LoRaWAN的区别 1.2 LoRa扩频技术介绍 1.2.1 什么是扩频技术 1.2.2 扩频技术的作用 1.2.3 扩频技术常用术语介绍 1.3 LoRaWAN帧结构 1.4 硬件方案介绍 1.4.1 终端设备方案 1.4.2 网关方案 2、LoRaWAN网络架构 3、LoRaWAN终端设备分类 …

vue之table表格的合并

目录 vue之table表格的动态合并vue之table表格的动态合并 后台给数据 处理断层vue之table表格的动态合并 后台给数据 前端处理断层根据后台数据合并前三列数据 vue之table表格的动态合并 vue之table表格的动态合并 后台给数据 处理断层 转载于:https://blog.csdn.…

HTML-table表格详解

文章目录 表格表格的说明(创建一个表格)1. 说明2. 设置 表头和表格边框样式设置1. 设置 长表格结构和补充1. 说明2. 结构3. 补充 表格布局(被淘汰)1. 表格布局(已经被 CSS 淘汰) 表格 表格的说明(创建一个表格) <!DOCTYPE html> <html><head><meta char…

HTML中的table表格

表格标签 分为行&#xff08;tr&#xff09;和列&#xff08;td&#xff09;&#xff0c;行及列都可以进行合并操作 table:定义表格 tr:定义行 td:定义列 //先有行&#xff0c;后有列 th:多用于表头&#xff0c;定义表格中…

elementUi——Table表格

Table表格 1、基础表格 在 Table 组件中&#xff0c;每⼀个表格由⼀个 Table-Column 组件构成&#xff0c;也就是表格的列 2、表格常用属性 3、常用属性 4、通过v-for封装适⽤性更好的表格 <el-table :data"tableData"><!-- 循环显示列 --><el-…

table表格的使用(表格的嵌套、合并)

表格基本格式 <table> //第一行 <tr> <td>第一列</td> <td>第二列</td> </tr> //第二行 <tr> <td>第一列</td> <td>第二列</td> </tr> </table> 1.<table></table>&#x…

vue3 antd table表格样式修改——ant design vue table表格的行高调整

vue3 antd项目实战——修改ant design vue table组件的默认样式&#xff08;调整每行行高&#xff09; 知识调用场景复现实际操作解决a-table表格padding过宽 知识调用 文章中可能会用到的知识链接vue3ant design vuets实战【ant-design-vue组件库引入】css样式穿透&#xff0…

web第十课:table表格标签

1.table表格介绍 table是表格标签&#xff0c;里面包含有行tr&#xff0c;行tr里包含td单元格 注意&#xff1a;table里只能包含tr&#xff0c;tr里面也只能包含td&#xff0c;td里面可以包含其他标签 代码演示&#xff1a; 这里在码标签的时候别忘了我们的快捷方式&#xff…

table表格基础

1.table主要用于呈现格式化数据。由行和列组成。 格式&#xff1a; <table><tr><th>表头</th><th>表头</th><th>表头</th></tr><tr><td>列1</td><td>列2</td><td>列3</td>…

手写table表格

<template> <div class"table" style"overflow-y: auto; height:15em; width:100%"> //overflow-y控制y轴滚动<table border"0" width"100%" height"16em" cellpadding"4.8" align"center&qu…

el-table表格还可以这么玩

六年代码两茫茫&#xff0c;不思量&#xff0c;自难忘 6年资深前端主管一枚&#xff0c;只分享技术干货&#xff0c;教你如何优雅地写代码 关注博主不迷路~ 文章目录 前言案例介绍案例截图效果预览template模板script部分css总结 前言 我们都知道表格是横向渲染的&#xff0c;一…

html使table整体居中,如何让整个table表格居中?

早期做网站都离开表格的使用&#xff0c;表格的对齐方式居中又是常用属性。居中最简章的方法就是直接在作用域写上&#xff1a;text-align:center&#xff0c;表格的话直接在table里写上aligncenter就可以了。不过表格已不是当下布局主流&#xff0c;如果习惯于表格布局的同学们…

Html——之table表格

表格&#xff08;table&#xff09;的应用&#xff1a; 表格的创建&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>test1</title> <--表格标记--> </head> <body><table>…

前端table表格的用法

文章目录 一、table的基础用法二、table属性三、合并单元格拓展总结 一、table的基础用法 代码如下&#xff1a; <table><tr>//第一行<td>第一行第1列</td><td>第一行第2列</td></tr><tr>//第二行<td>第二行第1列<…