当前位置: 首页 > news >正文

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
http://www.jsqmd.com/news/361878/

相关文章:

  • 2.9假期记录
  • 【Django毕设源码分享】基于python的花里有话花店管理系统设计与实现(程序+文档+代码讲解+一条龙定制)
  • 赶deadline必备! 10个降AI率平台深度测评,继续教育必看
  • 3款热门百万医疗险深度测评:“超医保百万医疗险(尊享版)”太香了 - 包罗万闻
  • SciChart.js v5版本全新发布:为Web图表开发带来更高效体验
  • 项目分享|Wan2.2:开源且进阶的大规模视频生成模型
  • 客流暴涨350%!华润万家华北调改店5连开,掀起“品质生活“潮
  • GPT-4在自动化测试脚本生成中的落地指南
  • Qt技术笔记(八):QCheckBox 多选框笔记
  • 【AI大模型】LLaMA-Factory微调入门个人重制版
  • 2026年学术写作工具深度盘点:通用大模型“退场”,垂直智能体如何重塑科研效率? - 沁言学术
  • [无线通信基础-22]:模拟信号与数字信号的本质区别以及误解
  • 有幸抢先体验了Ubuntu 26.04 LTS的daily build版本,安全性拉满到让我震惊
  • 2026重庆悬臂货架厂家Top5深度测评与选型指南 - 深度智识库
  • 中商金易赴辽考察天承集团 共谋绿色发展
  • 缩短60%选题周期?AI论文写作全流程测评:DeepSeek+Claude 3.5 强强联手 - 沁言学术
  • 2026年金属雕塑定制厂家权威推荐榜:不锈钢/铸铜/锻铁/现代抽象金属雕塑,结构美学与空间塑造优选方案 - 速递信息
  • PCIE retimer 的电阻检测原理是什么?
  • 题解:P14016 [ICPC 2024 Nanjing R] 拓扑
  • 2026年天津文物鉴定公司推荐,正规机构深度解析委托鉴定无忧之选! - 品牌鉴赏师
  • 西南仓储货架哪家靠谱?2026 年重型 / 阁楼平台 / 悬臂货架厂家推荐 - 深度智识库
  • 虚拟机报错:Host SMB controller not enabled...如何解决?
  • 流量暴跌的原因终于找到了
  • 2026年资产管理系统平台有哪些?推荐五大优质服务公司 - 品牌2025
  • 聊聊2026年做豆包搜索推荐广告能定制方案的公司哪家性价比高 - 工业设备
  • 系统如何应对时序数据的一致性、性能适配与投入产出平衡三大挑战
  • 2026年仓储货架厂家权威推荐报告 货架 / 重型货架 / 悬臂货架优选品牌 - 深度智识库
  • 元保保险正规靠谱之选 官方电话护航保障全程 - 包罗万闻
  • 面向业务演进的文档型数据管理新路径
  • 2026年优质数据资产管理平台选型指南,五大厂商及公司推荐汇总 - 品牌2025