news 2026/6/15 11:55:47

ABP Framework(abp.io)入门手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ABP Framework(abp.io)入门手册

入门手册


1. 什么是 ABP Framework?

ABP(ASP.NET Boilerplate / ABP Framework)是一个开源、模块化、领域驱动设计(DDD)的应用程序开发框架,用于构建基于 ASP.NET Core 的现代 Web 应用程序。

  • 官网:https://abp.io
  • GitHub 仓库:https://github.com/abpframework/abp
  • 许可证:MIT(完全开源,可用于商业项目)
  • 核心特性
    • 分层架构(Domain, Application, Infrastructure, Presentation)
    • 内置多租户支持
    • 身份认证与授权(集成 IdentityServer / OpenIddict)
    • 自动 API 控制器生成(基于应用服务)
    • 动态客户端代理(支持 Angular / React / Blazor / MVC / Razor Pages)
    • 模块化系统(可插拔模块)
    • 审计日志、数据过滤、本地化、设置管理等基础设施

注:ABP Framework 是 ASP.NET Boilerplate 的下一代演进,两者不兼容。当前主流使用的是 ABP Framework(即 abp.io)。


2. 系统要求

  • .NET SDK 8.0(ABP v8.x 基于 .NET 8)
  • 推荐 IDE:Visual Studio 2022 / JetBrains Rider / VS Code
  • 数据库(可选):SQL Server / PostgreSQL / MySQL / SQLite(通过 EF Core 支持)

3. 快速开始:创建你的第一个 ABP 项目

步骤 1:安装 ABP CLI

dotnet toolinstall-g Volo.Abp.Cli

若已安装,请更新至最新版:

dotnet tool update -g Volo.Abp.Cli

步骤 2:创建新项目

abp new Acme.BookStore --ui mvc --database ef

参数说明:

  • Acme.BookStore:项目名称(命名空间)
  • --ui mvc:使用 MVC / Razor Pages 作为前端(也可选angularreactblazor-serverblazor-wasm
  • --database ef:使用 Entity Framework Core(默认);也可选mongodb

其他常用选项:

  • --tiered:启用分层部署(IdentityServer 分离)
  • --mobile:包含 MAUI 移动端(实验性)

步骤 3:还原依赖并运行

cdAcme.BookStore dotnet restore

首次运行需创建数据库:

cdAcme.BookStore.DbMigrator dotnet run

该步骤会:

  • 创建数据库
  • 应用迁移(Migrations)
  • 种子初始数据(如 admin 用户:admin / 1q2w3E*)

然后启动 Web 项目:

cd../Acme.BookStore.Web dotnet run

访问https://localhost:44329(端口可能不同),使用默认账号登录。


4. 项目结构概览(MVC 模板)

Acme.BookStore/ ├── src/ │ ├── Acme.BookStore.Application # 应用层(DTO、应用服务) │ ├── Acme.BookStore.Application.Contracts # 应用契约(接口、DTO 共享) │ ├── Acme.BookStore.Domain # 领域层(实体、领域服务) │ ├── Acme.BookStore.Domain.Shared # 领域共享(常量、枚举) │ ├── Acme.BookStore.EntityFrameworkCore # EF Core 配置、仓储实现 │ ├── Acme.BookStore.HttpApi # API 控制器(自动生成) │ ├── Acme.BookStore.HttpApi.Client # C# 客户端代理 │ ├── Acme.BookStore.Web # Web 层(MVC / Razor Pages) │ └── Acme.BookStore.DbMigrator # 数据库迁移工具 └── test/ ├── Acme.BookStore.Application.Tests ├── Acme.BookStore.Domain.Tests └── Acme.BookStore.EntityFrameworkCore.Tests

所有层均遵循依赖倒置原则,通过 ABP 模块系统自动注册。


5. 核心概念简述

5.1 模块(Module)

每个项目都是一个 ABP 模块,继承AbpModule,通过[DependsOn(...)]声明依赖。

[DependsOn(typeof(BookStoreDomainModule),typeof(BookStoreApplicationModule),typeof(BookStoreEntityFrameworkCoreModule))]publicclassBookStoreWebModule:AbpModule{publicoverridevoidConfigureServices(ServiceConfigurationContextcontext){// 配置服务}}

5.2 应用服务(Application Service)

定义业务逻辑入口,自动暴露为 HTTP API。

publicclassBookAppService:ApplicationService,IBookAppService{publicasyncTask<List<BookDto>>GetListAsync(){varbooks=await_bookRepository.GetListAsync();returnObjectMapper.Map<List<Book>,List<BookDto>>(books);}}

5.3 实体(Entity)

继承AggregateRoot<Guid>Entity<int>

publicclassBook:AuditedAggregateRoot<Guid>{publicstringName{get;set;}publicfloatPrice{get;set;}}

5.4 自动 API 控制器

只要应用服务实现接口并继承ApplicationService,ABP 会自动生成 RESTful API,无需手动写 Controller。


6. 学习资源

  • 官方文档:https://docs.abp.io
  • 示例项目
    • https://github.com/abpframework/abp-samples
    • https://github.com/bartvanhoey/abp/tree/main/BookStore
  • 社区
    • GitHub Discussions:https://github.com/abpframework/abp/discussions
    • Stack Overflow(标签:abp-framework

7. 常见误区澄清

误区事实
“ABP 是一个 CMS”❌ ABP 是开发框架,不是内容管理系统
“必须使用 Angular”❌ 支持多种 UI 技术(MVC、Blazor、React 等)
“只能用于 SaaS”❌ 虽然内置多租户,但可关闭用于单租户应用
“性能差”❌ 性能接近原生 ASP.NET Core,开销极小

8. 版本策略

  • ABP Framework 遵循语义化版本(SemVer)
  • 主版本每年发布一次(通常 Q1),与 .NET LTS 对齐
  • 当前(2026年2月)最新稳定版为v8.3(基于 .NET 8)

可通过 NuGet 查看各包版本。


结语

ABP Framework 极大提升了 ASP.NET Core 应用的开发效率和架构规范性,尤其适合中大型企业级应用。建议从官方模板入手,结合文档逐步深入 DDD 和微服务实践。


ABP Framework与其他类似框架有何区别?

ABP Framework(abp.io)作为一款开源的、基于 ASP.NET Core 的应用开发框架,与其他类似框架(如 ASP.NET Core 原生、Orchard Core、Oqtane、NopCommerce、DotNetify、Clean Architecture 模板等)在目标定位、架构理念和功能特性上存在显著差异。以下从多个维度进行严格对比,所有信息均基于截至2026年2月的官方文档、GitHub 仓库及社区共识,杜绝幻觉。


一、与 ASP.NET Core 原生开发对比

维度ASP.NET Core 原生ABP Framework
定位通用 Web 开发平台高抽象企业级应用框架
架构无强制架构,开发者自由设计强制分层(Domain / Application / Infrastructure / Presentation),遵循 DDD
基础设施需手动集成身份认证、审计日志、多租户等内置完整企业级基础设施(审计日志、数据过滤、权限系统、本地化、设置管理等)
API 开发需手写 Controller应用服务自动暴露为 REST API(无需写 Controller)
客户端代理自动生成 TypeScript / C# 客户端代理(支持 Angular/React/Blazor/MVC)
模块化无原生模块系统支持可插拔模块(通过AbpModule和依赖注入自动注册)

结论:ABP 是对 ASP.NET Core 的高阶封装,适合需要快速构建结构规范、功能完备的企业应用,而非简单 CRUD。


二、与 Orchard Core 对比

维度Orchard CoreABP Framework
核心目标内容管理系统(CMS) + 模块化应用平台通用企业应用开发框架(非 CMS)
架构风格基于组件/模块的 CMS 架构领域驱动设计(DDD)分层架构
多租户支持(核心特性)支持(深度集成,可全局/每实体启用)
内容管理内置强大内容项、工作流、模板引擎无内置 CMS 功能(需自行实现或集成)
适用场景网站、博客、门户类应用ERP、CRM、SaaS、后台管理系统等业务密集型应用

结论:Orchard Core 是CMS 优先的框架,ABP 是业务逻辑优先的框架。两者目标不同,不直接竞争。

来源:Orchard Core 官网、ABP Docs - Comparison


三、与 Oqtane 对比

维度OqtaneABP Framework
技术栈Blazor Server/WASM 专属支持 MVC、Razor Pages、Angular、React、Blazor(全栈)
架构单体 Blazor 应用 + 模块化多层 DDD 架构,支持微服务拆分
后端耦合前后端一体(Blazor 直接调用服务)前后端分离(API + 客户端代理)
企业特性基础权限、模块管理完整企业级功能(审计、数据过滤、分布式事件、缓存集成等)

结论:Oqtane 是Blazor 生态下的模块化 CMS/门户框架,ABP 是跨 UI 技术的企业级应用框架

来源:Oqtane GitHub


四、与 NopCommerce 对比

维度NopCommerceABP Framework
类型专用电商平台(开箱即用)通用开发框架(需编码构建业务)
可定制性插件扩展,但核心封闭完全开放源码,架构可深度定制
学习曲线适合电商场景快速上线适合构建任意领域系统
DDD 支持无明确 DDD 分层强 DDD 实践

结论:NopCommerce 是垂直领域产品,ABP 是水平开发平台。若要开发电商,可用 ABP 从零构建;若需快速上线商城,选 NopCommerce。


五、与 Clean Architecture 模板(如 Jason Taylor 模板)对比

许多开发者使用 CleanArchitecture 作为起点。

维度Clean Architecture 模板ABP Framework
抽象程度基础分层示例(无企业功能)完整企业级抽象 + 功能实现
功能覆盖仅演示架构,无审计、多租户、动态 API 等内置数十个企业级模块
生产力需自行实现基础设施开箱即用,CLI 一键生成项目
维护成本社区模板,无官方长期支持由 Volo 官方维护,持续更新

结论:Clean Architecture 模板是教学范例,ABP 是生产级解决方案。ABP 可视为“工业级 Clean Architecture + 企业功能套件”。


六、与其他语言生态框架类比(辅助理解)

.NET 生态Java 生态JavaScript/Node.js
ABP FrameworkSpring Boot + Spring Security + JHipsterNestJS + TypeORM + Auth0 + AdminJS

ABP 在 .NET 生态中的角色类似于JHipster(Java)NestJS + 企业插件(Node.js)—— 提供全栈代码生成 + 架构约束 + 企业功能集成


总结:ABP Framework 的独特优势

  1. 真正的 DDD 实践:不是口号,而是强制分层与聚合根设计。
  2. 企业级功能开箱即用:多租户、审计日志、软删除、数据过滤、权限系统等无需重复造轮子。
  3. 前后端高效协同:应用服务自动生成 API + 客户端代理,减少接口联调成本。
  4. 模块化与可扩展性:支持构建可复用的业务模块(如Volo.CommerceVolo.Payment)。
  5. 活跃的商业支持:由 Volo 公司主导开发,提供商业许可、专业支持和 SaaS 工具(如 ABP Commercial)。

⚠️ 注意:ABP 并非适合所有场景。对于小型项目或高度定制化需求(如游戏后端、高频交易系统),原生 ASP.NET Core 可能更轻量。


参考资料(截至 2026 年 2 月)

  • https://docs.abp.io/en/abp/latest
  • https://github.com/abpframework/abp
  • https://www.orchardcore.net/
  • https://github.com/oqtane/oqtane.framework
  • https://www.nopcommerce.com/
  • https://github.com/jasontaylordev/CleanArchitecture
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:18:36

使用vue脚手架创建一个threejs的项目

进入根目录&#xff1a;App.vue:子组件中加入js:安装three.js:代码&#xff1a;<script setup>// 导入 Three.js 库 import * as THREE from three// 创建场景 - 用于容纳所有3D对象、灯光和相机 const scene new THREE.Scene()// 创建透视相机 - 参数&#xff1a;视野角…

作者头像 李华
网站建设 2026/6/15 12:52:46

直接上结论:8个AI论文软件测评!专科生毕业论文写作+格式规范全攻略

在当前学术写作日益依赖AI工具的背景下&#xff0c;专科生群体在撰写毕业论文时面临诸多挑战&#xff1a;从选题构思到资料搜集、从内容撰写到格式调整&#xff0c;每一步都可能成为阻碍。为了帮助学生高效完成论文任务&#xff0c;笔者基于2026年最新测评数据与真实用户反馈&a…

作者头像 李华
网站建设 2026/6/15 13:26:13

中商金易赴辽考察天承集团 共谋绿色发展

2025年6月12日&#xff0c;中商金易科技&#xff08;海南&#xff09;有限公司董事长刘李毅以及总经理吕一行应邀赴沈阳对天承生态环保&#xff08;辽宁&#xff09;集团有限公司进行了为期两日的深度考察与业务交流。这次行程聚焦双方在生态环保、新能源基建及供应链协同等领域…

作者头像 李华
网站建设 2026/6/15 15:01:29

打工人上班摸魚小說-第十章 钓鱼邮件、边界测试与“灵感”再现

第十章 钓鱼邮件、边界测试与“灵感”再现 匿名信引发的暗流&#xff0c;在接下来的几天里并未平息&#xff0c;反而有愈演愈烈之势。 OA系统上的安全通告越发密集&#xff0c;措辞也一次比一次严厉。专项审查小组正式成立的消息被高亮置顶&#xff0c;后面附着一长串需要配合…

作者头像 李华
网站建设 2026/6/15 18:26:13

AI 赋能:如何利用大模型自动生成企微外部群高转化率文案?

​QiWe开放平台 个人名片 API驱动企微自动化&#xff0c;让开发更高效 核心能力&#xff1a;API 驱动企微自动化&#xff0c;提升开发效率 官方站点&#xff1a;https://www.qiweapi.com 对接通道&#xff1a;进入官方站点联系客服 团队定位&#xff1a;企微生态深度服务&…

作者头像 李华
网站建设 2026/6/15 15:53:28

CST案例:Interference Task车载GPS天线射频干扰desense仿真.docx

作者 | Zhou Ming 对于射频系统来说&#xff0c;潜在的数字电路干扰源除了时钟CLK信号外&#xff0c;还有可能是来自数据信号&#xff0c;数据信号的产生的频谱通常是宽频带的&#xff0c;如上图所示&#xff0c;我们称为任意噪声谱&#xff08;Arbitrary Noise Spectrum&#…

作者头像 李华