ABP vNext 框架系列第1篇:企业级 .NET 开发,别再从头造轮子了

【NET8】微服务架构:手写 Abp.VNext 项目 阅读详情

大家好,我是刚子。

今天咱们聊聊 ABP vNext。

大部分企业级项目(ERP、CRM、OA、电商后台)都有着相似的底层需求:

  • 用户登录 + 权限控制,永远有一套。你得写角色、写权限、写菜单。

  • 审计日志,谁在什么时候操作了什么,得有。

  • 多租户,同一个系统服务多个客户,数据还不能混,得有。

  • 数据访问,写实体、写仓储、写增删改查,得有。

  • 定时任务,每天凌晨跑个报表、发个通知,得有。

这些功能需求——认证授权、审计日志、多租户支持、缓存、本地化、异常处理——在 ABP 里面全部内置好了,框架自带的功能模块,你拿来就能用。

说白了,ABP就是帮你把企业级应用里“重复的那60%”全都搞定,你只需要往上摞业务逻辑就行了。

一、为什么你需要 ABP?

大部分企业级项目(ERP、CRM、OA、电商后台)都有着相似的底层需求:

用户登录 + 权限控制,永远有一套。你得写角色、写权限、写菜单。审计日志,谁在什么时候操作了什么,得有。多租户,同一个系统服务多个客户,数据还不能混,得有。数据访问,写实体、写仓储、写增删改查,得有。定时任务,每天凌晨跑个报表、发个通知,得有。

这些功能需求——认证授权、审计日志、多租户支持、缓存、本地化、异常处理——在 ABP 里面全部内置好了,框架自带的功能模块,你拿来就能用。

说白了,ABP就是帮你把企业级应用里“重复的那60%”全都搞定,你只需要往上摞业务逻辑就行了。

二、ABP vNext 是什么

ABP vNext(全称:ASP.NET Boilerplate Next)是一个基于 ASP.NET Core 的开源企业级应用框架,由土耳其开发者Volkan Ceylan主导开发。

这个项目最早是2013年左右在社区里开始做的。为什么要做它?老ABP(ASP.NET Boilerplate)跑在.NET Framework上,很多技术已经被时代淘汰了。于是作者干脆把底层推到.NET Core技术栈上重新设计和实现,这就有了现在的ABP vNext。

ABP vNext不是一个简单的NuGet包,而是一整套解决方案——从底层架构到顶层应用模块,从代码生成工具到文档体系都有了。

三、ABP 的核心功能:能帮你省掉哪些事?

刚子给你列一个最核心的功能清单:

  • 模块化开发:应用程序拆成独立的功能模块(用户模块、订单模块、支付模块),每个模块可以独立开发、独立部署、甚至复用。团队可以并行开发,互不干扰。

  • 领域驱动设计(DDD)支持:原生支持多变的复杂业务场景,内置实体、值对象、聚合根、仓储、领域服务等DDD核心概念。

  • 开箱即用的认证授权:用户登录、角色权限、策略控制、JWT、OAuth2一键集成。

  • 多租户:一行配置开启多租户支持,同一个系统服务多个客户,数据自动隔离。可共享数据库,也可独立数据库,灵活可控。

  • 审计日志:自动记录“谁在什么时候改了什么东西”,无需手写任何代码。

  • 数据访问全覆盖:默认支持 EF Core 和 MongoDB,内置通用仓储模式(IRepository<TEntity, TKey>),CRUD代码量大幅减少。

  • 统一异常处理:框架提供全局异常过滤器,自动返回标准化响应(如ProblemDetails),不用再重复写try-catch了。

有同行做过测算:这些基础设施类功能加起来,通常要占掉一个项目大约60%的开发周期。

ABP把这些全部内置好了。你接手一个新项目,第一天不用搭架构、配权限、写审计日志,直接动手写业务代码就行了。

四、ABP 的架构是怎样的?

很多新手刚接触ABP时,被一堆分层概念“领域层、应用层、基础设施层、表现层”搞晕了。

刚子用图书商城这个大家熟悉的场景讲清楚这四层在干嘛:

  • 领域层(Domain):放“核心业务规则”。比如“库存数量不能为负数”这个规则,就放在领域层。定义Book实体、BookManager领域服务,确保业务逻辑不会散落到各处。

  • 应用层(Application):写“应用服务”,编排业务流程,但不包含核心业务规则。比如“创建图书+同步库存”的流程放在BookAppService里。它调用领域层完成具体操作,但不参与库存不能为负的判断。

  • 基础设施层(Infrastructure):管技术实现。比如用EF Core实现IBookRepository接口,跟数据库打交道,上层不关心用的是SQL Server还是MySQL。

  • 表现层(Presentation):用户能看到的界面或API端点。比如BookController提供“查询图书”“新增图书”的HTTP接口。

目录结构也是按这个分好层了的:

  • MyProject.Domain:存放实体对象和领域逻辑。

  • MyProject.Application:存放应用服务(业务接口)。

  • MyProject.EntityFrameworkCore:数据访问实现。

  • MyProject.HttpApi.Host:Web API 启动项目。

ABP已经帮你划好了这四层的目录结构和依赖关系,你只需按对应的层写代码即可。

五、5分钟跑起第一个ABP项目

心动不如行动,直接上手跑一个。

你需要在电脑上安装好以下工具:

  • .NET SDK 6.0+:核心运行环境,命令行执行dotnet --version检查一下。

  • Node.js:前端依赖,推荐LTS版本。

  • 数据库:SQL Server / MySQL / PostgreSQL 任选一个。刚子示例用SQL Server。

  • IDE:Visual Studio 2022 或 JetBrains Rider 都可以。

Step 1:安装 ABP CLI

在命令行粘贴以下代码,按回车执行:

bash

dotnet tool install -g Volo.Abp.Cli

安装完成后验证一下版本:

bash

abp --version

显示类似 ABP CLI 9.x.x 的结果,说明安装成功。

Step 2:创建项目

用ABP CLI创建名为“book-store”的应用程序项目:

bash

abp new book-store -t app

-t app表示生成「前后端分离模式」的应用程序模板,后端基于ASP.NET Core Web API,前端默认是Angular。当然你也可以换成-t module生成独立模块,或者选-t mvc生成包含MVC界面的项目。

执行成功后,项目结构大概是这样的:

bash

book-store/
├── aspnet-core/           # 后端 C# 项目
│   ├── src/               # 源代码
│   │   ├── book-store.Domain    # 实体+领域逻辑
│   │   ├── book-store.Application      # 应用服务
│   │   ├── book-store.EntityFrameworkCore # EF Core 数据访问
│   │   ├── book-store.HttpApi   # API 接口定义
│   │   └── book-store.HttpApi.Host # Web API 启动项目
│   └── test/              # 单元测试项目
├── angular/               # 前端 Angular 项目
└── vue/                   # 前端 Vue 项目(如果选了Vue)

Step 3:配置数据库连接

找到 aspnet-core/src/book-store.HttpApi.Host/appsettings.json 文件,修改ConnectionStrings节点内的Default连接字符串为实际地址。

json

"ConnectionStrings": {
  "Default": "Server=127.0.0.1;Database=BookStoreDb;User Id=sa;Password=你的密码;"
}

Step 4:初始化数据库

在 aspnet-core/src/book-store.HttpApi.Host 目录下执行以下命令:

bash

dotnet ef database update

ABP会自动创建所有需要的数据库表(用户表、角色表、权限表、租户表、审计日志表、设置表等),开发者不需要手动建表。

Step 5:启动后端

在同一个HttpApi.Host目录下,执行:

bash

dotnet run

默认监听 https://localhost:44367 或类似端口。用浏览器访问 https://localhost:44367/swagger,看到Swagger文档页面,说明API服务已经启动成功了。

Step 6:启动前端(可选)

如果要体验完整的带前端页面的系统,可以启动前端项目:

bash

cd angular     # 或 vue
npm install
npm run serve

默认账号为 admin / 1q2w3E*,登录后可以看到一个功能完备的后台管理模板,用户管理、角色管理、菜单管理、审计日志等界面都有了。

六、添加第一个业务模块:图书管理

下面通过一个图书管理模块的实例,完整走一遍ABC的四个步骤:实体→仓储→应用服务→API端点。

在 Domain 层定义实体

csharp

using System;
using Volo.Abp.Domain.Entities.Auditing;

namespace book_store.Books
{
    // 继承 AuditedAggregateRoot 自动带上创建人/修改人/创建时间/修改时间
    public class Book : AuditedAggregateRoot<Guid>
    {
        public string Name { get; set; }
        public string Author { get; set; }
        public decimal Price { get; set; }
        public int Stock { get; set; }
    }
}

继承 AuditedAggregateRoot<Guid>最大的好处就是:不用自己写CreatedAt、CreatorId、LastModifiedAt这些审计字段了,ABP会自动帮你处理。

在 Infrastructure 添加 DbContext 映射

csharp

using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
using book_store.Books;

namespace book_store.EntityFrameworkCore
{
    public static class BookStoreDbContextModelCreatingExtensions
    {
        public static void ConfigureBook(this ModelBuilder builder)
        {
            builder.Entity<Book>(b =>
            {
                b.ToTable("AppBooks");
                b.ConfigureByConvention();  // 按ABP规范配置(软删除、审计等)
                b.Property(x => x.Name).IsRequired().HasMaxLength(128);
                b.Property(x => x.Author).HasMaxLength(64);
                b.Property(x => x.Price).HasColumnType("decimal(18,2)");
            });
        }
    }
}

在 Application.Contracts 创建 DTO 和接口(这一步在项目创建时可选,框架通常已生成模板,按实际需要调整即可)

csharp

using System;
using Volo.Abp.Application.Dtos;

namespace book_store.Books
{
    public class BookDto : AuditedEntityDto<Guid>
    {
        public string Name { get; set; }
        public string Author { get; set; }
        public decimal Price { get; set; }
        public int Stock { get; set; }
    }
}

csharp

using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace book_store.Books
{
    public interface IBookAppService : ICrudAppService<BookDto, Guid>
    {
        Task DecreaseStockAsync(Guid id, int quantity);
    }
}

在 Application 层实现应用服务

ABP提供的CrudAppService基类已经包含了GetListAsync、CreateAsync、UpdateAsync、DeleteAsync这五个基础的CRUD方法。大部分业务场景下,刚子建议优先继承CrudAppService,直接复用框架生成的代码,不要重复写。

csharp

using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace book_store.Books
{
    public class BookAppService :
        CrudAppService<Book, BookDto, Guid, PagedAndSortedResultRequestDto>,
        IBookAppService
    {
        public BookAppService(IRepository<Book, Guid> repository)
            : base(repository)
        {
        }

        public async Task DecreaseStockAsync(Guid id, int quantity)
        {
            var book = await Repository.GetAsync(id);
            if (book.Stock < quantity)
            {
                throw new Exception("库存不足");
            }
            book.Stock -= quantity;
            await Repository.UpdateAsync(book);
        }
    }
}

几行代码,Create、Update、Delete、GetList、Get这五个标准API就全都有了。加了一个DecreaseStockAsync做扣库存业务——这个Repository就是框架内置的通用仓储基类,提供标准的增删改查方法,不用手写Insert、Update、Delete这些基础SQL代码了。

暴露 API 端点

在 HttpApi 项目中添加控制器。但实际上,ABP对应用服务有自动API约定——只要继承CrudAppService之类的基类,或者类名以AppService结尾,框架会自动把它暴露成HTTP端点,路径默认是/api/app/book。

刚子大白话:在实际项目中,Book换成你的业务实体名称,CreateUpdateBookDto对应了前端传过来的数据结构,代码生成器(ABP Suite)帮你生成这些模板后,你只需要修改几个字段名和业务约束条件,API就出来了。不需要手写Controller、Service、Repository三层代码。

小结

ABP vNext不是“银弹”,也没法帮你写代码。但它的定位很清楚:帮你跳过企业级开发里那60%重复的基础设施工作,让你专注业务本身。

下次写一个新项目,身份认证别手写,多租户别手写,审计日志别手写。刚子已经把ABP怎么发车、怎么搭路、最核心的两个场景(Swagger→数据库映射、加Book实体走全流程)都演示完了。剩下的看文档,照着Roadmap走就行了。

如果你觉得这篇有用,点个赞、转给还在从头堆代码的兄弟。

我是刚子,一个还在写.NET的老程序员。咱们下篇见!

ABPVNEXT-微服务框架基础入门 在ABPMicServie.DbMigrator/OpenIddictDataSeeder.cs文件的CreateClientsAsync方法中,新增其他内部客户端的调用权限,哪个客户端需要调用,就添加哪个,现在为了测试,就讲所有的客户端都添加了,图片里只截图了一个,下面的每个客户端权限都添加了,具体可以参考。6.这样当执行Sample的GetAsync()方法的时候,就会同步调用另外一个微服务的新增接口,实现的远程调用,客户端授权,以及权限管理的相关功能。 阅读详情

相关推荐

ABP VNext系列(一)-第一个ABP VNext

ABP VNext系列(一)-第一个ABP VNext 目录ABP VNext系列(一)-第一个ABP VNext一. ABP VNext基本介绍1. 什么是ABP VNext?2. 为什么要用ABP VNext二. 创建基于ABP VNext的项目1. 控制台宿主2. WokerService宿主3. Web宿主三. 总结 一. ABP VNext基本介绍 1. 什么是ABP VNext? 1. 2. 为什么要用ABP VNext 二. 创建基于ABP VNext的项目 1. 控制台宿主 2. Woke

rhnxbdbdh的博客 1618

.NET 6 之 ABP vNext 初体验

马上国庆了,dotNative 预祝大家假期愉快,Happy National Day!本文将介绍在.net6平台的asp.net core webapi框架中,如何使用abp vnext框架进行模块化开发,重在思想理解。ABP vNext 介绍官方介绍ABP vNext 本身是一个包含许多 NuGet 包的 模块化(Module) 框架。它还提供了一个完整的基础架构来开发你自己的具有...

dotNET跨平台 5628

ABP vNext电商项目落地实战(一)——项目搭建

ABP vNext项目实战落地

个人成长记录 2777

入门系列-依赖注入

依赖注入 ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Extensions.DependencyInjection nuget包)开发的.因此,它的文档在ABP中也是有效的. 模块化 由于ABP是一个模块化框架,因此每个模块都定义它自己的服务并在它自己的单独模块类中通过依赖注入进行注册.例: public class BlogModule : Abp...

研究、探索、分享与成长 4467

OpenIddict在ABP vNext中的隐藏坑点:微信扫码登录的自定义授权实现

本文深入探讨了在ABP vNext框架中集成OpenIddict实现微信扫码登录时遇到的关键挑战与解决方案。文章详细解析了自定义授权类型的实现流程,包括如何构建健壮的授权验证器、设计用户匹配策略,并重点揭示了多租户处理、声明映射以及调试中常见的“invalid_grant”等隐藏坑点,为开发者提供了一份实用的避坑指南。

weixin_29324401的博客 287

LeGO-LOAM运行kitti数据集

文章目录1. kitti-lego-loam2. 改动3. 实验结果4. evo轨迹测评 1. kitti-lego-loam 链接:kitti-lego-loam kitti-lego-loam提供了将kitti序列转化成rosbag的代码,在kittibag中. 需要注意下数据文件的存放顺序,以00序列为例: datafolder          |____results          &

Zlp19970106的博客 8704

ABP框架01.基础与项目搭建,从0到1上手企业级开发

ABP框架是一个基于领域驱动设计(DDD)的企业级.NET开发框架,提供身份认证、多租户支持等开箱即用的功能。本文介绍了ABP的核心价值、四层架构设计,并通过图书商城案例讲解如何使用ABP Studio快速搭建项目。详细说明了从环境准备、项目创建到数据库初始化的完整流程,最后演示如何运行并验证第一个ABP应用。ABP框架通过标准化架构和功能模块,帮助开发者聚焦业务逻辑而非基础架构,显著提升开发效率。

步伐不停,继续努力~ 1839

STM32硬件SPI驱动W25Q128实战:从CubeMX配置到DMA高速读写(附完整代码)

本文详细介绍了如何使用STM32硬件SPI驱动W25Q128 Flash存储器,从CubeMX配置到DMA高速读写的完整实战指南。内容包括硬件连接方案、SPI参数优化、DMA配置技巧以及完整代码实现,帮助开发者快速掌握高速稳定的SPI Flash存储解决方案。

weixin_33734785的博客 185

ABP VNext实战:5分钟搭建企业级后台管理系统(含完整代码)

本文详细介绍了如何使用ABP VNext框架在5分钟内快速搭建企业级后台管理系统,包含完整代码示例。ABP VNext作为ASP.NET Core生态中的先进模块化框架,提供标准化基础设施、统一开发范式和技术栈整合,显著提升开发效率。通过实战演示,读者将掌握从项目生成、数据库迁移到模块化开发的完整流程,实现包含权限管理、多租户支持等企业级功能的后台系统。

nginx7reverse的博客 773

腾讯ACE反作弊系统:内核驱动与AI行为分析如何守护游戏公平

在游戏安全领域,反作弊技术是保障公平竞技环境的核心防线。其基本原理是通过监控系统关键行为,识别并阻断非法的第三方程序干预。从技术实现看,现代反作弊方案普遍采用分层防御架构,结合用户态模块进行应用层检测,并依赖内核态驱动实现底层深度监控,以此构建纵深防御体系。这种技术的核心价值在于,它能有效对抗从简单内存修改到高级驱动级作弊等多种威胁,维护游戏经济系统和玩家体验的完整性。随着作弊手段的演进,行为分析与AI赋能变得至关重要,系统通过机器学习模型分析进程行为序列的异常模式,即使面对未知特征的外挂变种也能进行有效识

weixin_33978578的博客 743

GameFramework 框架详解之 Network网络模块 工具链

GameFramework(下面简称GF)Demo中,已经给我们提供了Network模块使用的protobuf使用的动态链接库protobuf-net.dll,但是GF并没有给我们提供protobuf相关的工具链,比如:1.proto文件自动导出对应c#的Packet类和PacketHandler类2.导出Packet类继承IReference以便使用引用池。3.自动生成Packet类和PacketHandler的Id,且保持和服务器Id一一对应。

TxNet 2903

ABP VNext实战指南:从零构建模块化企业级应用

本文是ABP VNext的实战指南,详细介绍了如何从零开始使用这一基于ASP.NET Core的模块化框架构建企业级应用。内容涵盖环境准备、项目初始化、核心模块配置,并通过“产品管理”模块的完整开发流程,深入解析了其领域驱动设计(DDD)思想、内置权限系统与多租户支持,旨在帮助开发者快速掌握这一提升开发效率、规范架构的企业级开发利器。

time3的博客 592

TriCore架构-基于TC397在SOTA过程中AB-SWAP切换底层原理

TC397的SOTA升级机制通过硬件地址重映射实现,利用MMU将逻辑地址动态映射到不同物理地址。其PFlash支持标准/备用地址映射,通常使用PF0+PF1+PF4空间以便于OTA处理。升级时,新固件自动写入非活动分区(A/B分区切换),由地址转换函数完成逻辑地址到物理地址的转换。系统重启后根据寄存器选择启动区域,实现安全无缝的固件更新。

xiandang8023的博客 490

Abp Vnext Pro:5分钟搞定企业级中后台系统开发的完整解决方案

还在为构建企业级中后台系统而烦恼吗?面对复杂的权限管理、多租户架构、数据字典配置,你是否感到无从下手?Abp Vnext Pro正是为解决这些痛点而生的开源框架,它基于Vue.js和.NET技术栈,为你提供了一套开箱即用的企业级开发解决方案。无论你是初创团队还是大型企业,这个框架都能帮你快速搭建稳定、可扩展的后台管理系统。 ## 为什么选择Abp Vnext Pro?从痛点出发的解决方案 想象

gitblog_00765的博客 328

OpenClaw 与十几款国产 “龙虾” 智能体深度对比

详解介绍OpenClaw和各种类似国产“龙虾”智能体工具深度对比

program哲学 2349

AUTOSAR从入门到精通-复杂设备驱动(CDD)

CDD是复杂设备驱动的首字母缩写主要为驱动程序或复杂驱动程序,但不限于驱动程序。复杂驱动程序是一种未被AUTOSAR标准化的软件实体,可以通过AUTOSAR接口和/或基本软件模块api访问。 CDD是位于基础软件复杂驱动层的特定模块,与标准BSW模块或Rte交互。 CDD可能需要与分层软件体系结构的模块连接 分层软件架构的模块可能需要连接到CDD CDD可能需要通过Rte连接swc。

getusushu的博客 4193

Abp VNext 项目创建简介

文章目录简介项目创建关于 module 项目的简单说明简单优化项目1、移动端项目删除2、*.sln.DotSettings3、*.HttpApi.Host 的调整4、*.HttpApi 和 *.HttpApi.Client 的调整5、*.EntityFrameworkCore、*.EntityFrameworkCore.DbMigrations 和 *.DbMigrator 的调整6、*.Domain 和 *.Domain.Shared 的调整7、*.Application 和 *.Application.

寒冰屋的专栏 1万+

手撕Lua字节码:从黑盒到透明

lua 字节码 怎么‘手撕’一个 chunk 看看里面啥样?我手里有一个.luac或出来的二进制字节码,想知道里面到底是什么结构、哪些字段、有哪些指令,怎么一步一步“拆箱”,从一个黑盒变成有迹可循的东西?也就是:不满足于只会loadpcall而是想亲眼看看一个 chunk 内部长啥样,甚至写点工具把它解析出来。这篇就用带你从“拿到一坨.luac不搞高深玄学,尽量让你看完就能自己动手。注:以 Lua 5.3/5.4 为主,细节各版本略有不同,但大体套路是一致的。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 99

五分钟完成 ABP vNext 通讯录 App 开发

ABP vNext(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计。Abp ...

dotNET跨平台 1018

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ABP框架实战:从零构建模块化.NET应用

本文从开发者视角出发,详细介绍了如何使用ABP框架从零构建模块化.NET应用。通过控制台和Web API两个实战项目,深入解析了ABP模块化的核心思想、依赖注入、自动API生成等关键特性,帮助开发者快速掌握这一企业级开发框架,提升项目可维护性和开发效率。

weixin_29218963的博客 279

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ABP vNext分布式事件总线RabbitMQ注意事项

[https://docs.abp.io/zh-Hans/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration](ABP vNext...

dotNET跨平台 3325

ABP框架实战:企业级.NET开发的模块化与DDD架构指南

企业级应用开发中,权限、日志、多租户等基础能力常被重复实现,导致效率流失。模块化架构与领域驱动设计(DDD)为解决此类问题提供了方法论。ABP框架作为开源的应用框架,基于ASP.NET Core构建,将用户角色、审计日志、数据过滤等能力封装为可插拔模块,通过约定优于配置和动态API机制,让应用服务方法自动映射为HTTP接口,显著降低前后端分离项目的联调成本。其内置的多租户与权限体系适用于SaaS平台和管理系统,同时清晰的DDD分层为团队提供架构约束。文章从总体认知切入,剖析ABP的工程结构、模块化机制与适用

weixin_30983353的博客 181

ABP框架总体介绍:模块化与分层设计驱动的高效开发基础设施

在业务系统开发中,基础设施建设往往是重复劳动的重灾区。基于ASP.NET Core的ABP框架,通过模块化与分层架构,将认证授权、审计日志、数据库迁移、后台任务等通用能力封装为开箱即用的基础设施。其核心思想是约定优于配置,利用依赖注入自动注册、仓储模式与工作单元机制简化数据访问,同时通过动态API与Swagger实现前后端高效协作。多租户、权限控制、事件总线等特性进一步提升了企业级应用的扩展性与安全性。无论是构建中后台管理软件,还是作为DDD实践的技术底座,ABP都能显著降低开发成本。本文从框架的整体视角出

weixin_30846347的博客 272

ABP vNext微服务架构详细教程——分布式权限框架(上)

1简介ABP vNext框架本身提供了一套权限框架,其功能非常丰富,具体可参考官方文档:https://docs.abp.io/en/abp/latest/Authorization但是我...

dotNET跨平台 3111

【开发技术】Abp.vnext中使用分布式事件总线

事件总线能够简化各组件或进程间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。

勿芮介的博客 1509

Abp vnext框架基础数据表解析

Abp vnext框架的系统默认的数据表解析

滴水成河,汇流成海 2745
上一篇: 用 .NET 8 + uni-app 做一套多租户畜牧 SaaS:我们在秦巴牧云踩过的 6 个坑
下一篇: 告别影楼和付费 App,5 分钟本地搭一个证件照自由平台|HivisionIDPhotos 开箱实测
码农刚子.
博客等级 码龄8年 554粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农刚子.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值