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

bash 复制代码
dotnet tool install -g Volo.Abp.Cli

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

bash 复制代码
dotnet tool update -g Volo.Abp.Cli

步骤 2:创建新项目

bash 复制代码
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:还原依赖并运行

bash 复制代码
cd Acme.BookStore
dotnet restore

首次运行需创建数据库:

bash 复制代码
cd Acme.BookStore.DbMigrator
dotnet run

该步骤会:

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

然后启动 Web 项目:

bash 复制代码
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(...)] 声明依赖。

csharp 复制代码
[DependsOn(
    typeof(BookStoreDomainModule),
    typeof(BookStoreApplicationModule),
    typeof(BookStoreEntityFrameworkCoreModule)
)]
public class BookStoreWebModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        // 配置服务
    }
}

5.2 应用服务(Application Service)

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

csharp 复制代码
public class BookAppService : ApplicationService, IBookAppService
{
    public async Task<List<BookDto>> GetListAsync()
    {
        var books = await _bookRepository.GetListAsync();
        return ObjectMapper.Map<List<Book>, List<BookDto>>(books);
    }
}

5.3 实体(Entity)

继承 AggregateRoot<Guid>Entity<int>

csharp 复制代码
public class Book : AuditedAggregateRoot<Guid>
{
    public string Name { get; set; }
    public float Price { get; set; }
}

5.4 自动 API 控制器

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


6. 学习资源


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

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

来源:Orchard Core 官网ABP Docs - Comparison


三、与 Oqtane 对比

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

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

来源:Oqtane GitHub


四、与 NopCommerce 对比

维度 NopCommerce ABP 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 Framework Spring Boot + Spring Security + JHipster NestJS + 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 月)

相关推荐
A_nanda20 小时前
C#调用Quartz.NET的完整实现。
c#·.net·quartz
1314lay_10071 天前
Vue3 + Element Plus项目和C# .Net 7.0 Core后端API项目发布部署到服务器
服务器·前端·javascript·vue.js·elementui·c#·.net
专注VB编程开发20年1 天前
MC508 PLC支持多线程网络通讯,多客户端连接,要注意不要同时读写(麦格米特PLC)
服务器·网络·windows·.net·plc·mc508·麦格米特
步步为营DotNet2 天前
深度探秘.NET中的IAsyncEnumerable:异步迭代的底层奥秘与高效实践
java·数据库·.net
波波0072 天前
每日一题:.NET中volatile解决了什么问题
开发语言·.net
时光追逐者2 天前
C#/.NET/.NET Core优秀项目和框架2026年1月简报
c#·.net·.netcore
时光追逐者2 天前
一款开源、强大、简单易用的 .NET 假数据生成利器
开源·c#·.net·.net core
用户298698530142 天前
C#: 对文字段落或文本施加阴影?Spire.Doc for .NET 助你一臂之力
后端·c#·.net
小码编匠2 天前
WPF 动态生成行列可变表格的实现方法
后端·c#·.net
追逐时光者3 天前
一款开源、强大、简单易用的 .NET 假数据生成利器
后端·.net