[Abp 源码分析]零、文章目录
0.系列文章目录
- 一、Abp 框架启动流程分析
- 二、模块系统
- 三、依赖注入
- 四、模块配置
- 五、系统设置
- 六、工作单元的实现
- 七、仓储与 Entity Framework Core
- 八、缓存管理
- 九、事件总线
- 十、异常处理
- 十一、权限验证
- 十二、多租户体系与权限验证
- 十三、多语言(本地化)处理
- 十四、DTO 自动验证
- 十五、自动审计记录
- 十六、后台工作与后台工作者
- 十七、ASP.NET Core 集成
1.为什么要写本系列文章?
Abp 源码分析系列是针对 Abp 3.7.2 版本来进行的一个源码分析记录,在这个系列文章当中我更多的是针对大体结构进行了一些分析,也是给其他想要阅读 Abp 源码的朋友一个参考,部分细微处的代码我会拿出我认为重要的地方进行详细讲解。
在更新的文章当中肯定会有一些错误或者不足的地方,大家可以在评论当中提出来。
2.Abp 简要介绍
GitHub 地址:https://github.com/aspnetboilerplate/
官网文档:https://aspnetboilerplate.com/Pages/Documents
ASP.NET Boilerplate 是专为现代 Web 应用程序设计的通用快速开发框架,它使用成熟的第三方库并在其基础之上进行开发,为您提供快速健壮的开发体验。
在 ABP 官网上提供了模版项目下载,目前已经有 Vue + Abp、Angular + Abp、ASP.NET MVC CORE + Abp 的最佳实践。
ASP.NET Boilerplate 使用最新的 ASP.NET Core&EF Core,但同时也支持ASP.NET MVC 5.x和EF 6.x。
模块化设计
Abp 基于模块化设计,拥有极高的可扩展性,Abp 也提供一些已经开发好的模块作为其基础设施。
多租户
Abp 本身就是基于多租户架构来进行设计的,从 UI 到数据库都可以见到多租户的影子。
标准的接口定义

层级图:

3.其他博客园 ABP 相关的资料博客地址
[Abp 源码分析]零、文章目录的更多相关文章
- ABP源码分析一:整体项目结构及目录
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module ...
- ABP源码分析二:ABP中配置的注册和初始化
一般来说,ASP.NET Web应用程序的第一个执行的方法是Global.asax下定义的Start方法.执行这个方法前HttpApplication 实例必须存在,也就是说其构造函数的执行必然是完成 ...
- ABP源码分析三:ABP Module
Abp是一种基于模块化设计的思想构建的.开发人员可以将自定义的功能以模块(module)的形式集成到ABP中.具体的功能都可以设计成一个单独的Module.Abp底层框架提供便捷的方法集成每个Modu ...
- ABP源码分析四:Configuration
核心模块的配置 Configuration是ABP中设计比较巧妙的地方.其通过AbpStartupConfiguration,Castle的依赖注入,Dictionary对象和扩展方法很巧妙的实现了配 ...
- ABP源码分析五:ABP初始化全过程
ABP在初始化阶段做了哪些操作,前面的四篇文章大致描述了一下. 为个更清楚的描述其脉络,做了张流程图以辅助说明.其中每一步都涉及很多细节,难以在一张图中全部表现出来.每一步的细节(会涉及到较多接口,类 ...
- ABP源码分析六:依赖注入的实现
ABP的依赖注入的实现有一个本质两个途径:1.本质上是依赖于Castle这个老牌依赖注入的框架.2.一种实现途径是通过实现IConventionalDependencyRegistrar的实例定义注入 ...
- ABP源码分析七:Setting 以及 Mail
本文主要说明Setting的实现以及Mail这个功能模块如何使用Setting. 首先区分一下ABP中的Setting和Configuration. Setting一般用于需要通过外部配置文件(或数据 ...
- ABP源码分析八:Logger集成
ABP使用Castle日志记录工具,并且可以使用不同的日志类库,比如:Log4Net, NLog, Serilog... 等等.对于所有的日志类库,Castle提供了一个通用的接口来实现,我们可以很方 ...
- ABP源码分析九:后台工作任务
文主要说明ABP中后台工作者模块(BackgroundWorker)的实现方式,和后台工作模块(BackgroundJob).ABP通过BackgroundWorkerManager来管理Backgr ...
随机推荐
- node.js 使用forever守护进程
//forever的安装:npm install forever -g//使用forever启动守护进程:forever start 路径/your_app.js//关闭守护进程:forever st ...
- 玩转spring mvc(六)---自定义异常跳转页面
本文主要是关于如何在出现异常 如404时,跳转到自定义的异常页面,当然这不是spring的知识,但可以整合进去. 在web.xml中新增如下代码,里边的路径可以根据实际情况进行修改 <!-- 7 ...
- python教你用微信每天给女朋友说晚安
但凡一件事,稍微有些重复.我就考虑怎么样用程序来实现它. 这里给各位程序员朋友分享如何每天给朋友定时微信发送"晚安",故事,新闻,等等··· ···最好运行在服务器上,这样后台挂起 ...
- java中位运算
1byte(字节)=8bit(比特) 1 0 0 0 0 0 0 0 1 2进制的1的原码 反码 补码 0 0 0 0 0 0 0 0 2进制的0的原码 反码 补码 -1 1 0 0 0 0 ...
- Django中模板过滤器总结
一.形式:小写: {{ name | lower }} 二.串联:先转义文本到HTML,再转换每行到 <p> 标签: {{ my_text|escape|linebreaks } 三.过滤 ...
- 用ASP.NET Core 2.0 建立规范的 REST API -- GET 和 POST
本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314 ...
- BZOJ_3238_[Ahoi2013]差异_后缀数组+单调栈
BZOJ_3238_[Ahoi2013]差异_后缀数组+单调栈 Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao ...
- java happens-before原则规则
程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作: 锁定规则:一个unLock操作先行发生于后面对同一个锁额lock操作: volatile变量规则:对一个变量的写操 ...
- LeetCode算法题-Number of Lines To Write String(Java实现)
这是悦乐书的第319次更新,第340篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第188题(顺位题号是806).我们要将给定字符串S的字母从左到右写成行.每行最大宽度为 ...
- ConcurrentDictionary并发字典知多少?
背景 在上一篇文章你真的了解字典吗?一文中我介绍了Hash Function和字典的工作的基本原理. 有网友在文章底部评论,说我的Remove和Add方法没有考虑线程安全问题. https://doc ...