随笔分类 - Abp 框架
记录了自己在使用 Abp 框架过程中的一些体会和针对 Abp 框架实现的一些个人解析。
摘要:一、背景 在实际项目的开发当中,使用 Abp Zero 自带的审计日志功能写入效率比较低。其次审计日志数据量中后期十分庞大,不适合与业务数据存放在一起。所以我们可以重新实现 Abp 的 接口,来让我们的审计日志数据存储在 MongoDb 当中。 二、实现 2.0 引入相关包 这里我们需要在模块项目引
阅读全文
摘要:在之前有些过一篇文章 "《使用 DryIoc 替换 Abp 的 DI 框架》" ,在该文章里面我尝试通过以替换 内部的 来实现使用我们自己的 DI 框架。替换了之后我们基本上是可以正常使用了,不过仍然还存在有以下两个比较显著的问题。 1. 拦截器功能无法正常使用,需要重复递归查找真实类型,消耗性能。
阅读全文
摘要:0. 简介 整个 Abp 框架最为核心的除了 Abp 库之外,其次就是 Abp.AspNetCore 库了。虽然 Abp 本身是可以用于控制台程序的,不过那样的话 Abp 就基本没什么用,还是需要集合 ASP.NET Core 才能发挥它真正的作用。 在 Abp.AspNetCore 库里面,Abp
阅读全文
摘要:一、背景 你说我 Castle Windsor 库用得好好的,为啥要大费周章的替换成 "DryIoc" 库呢?那就是性能, "DryIoc" 是一款优秀而且轻量级的 DI 框架,整个项目代码就两个文件,加起来代码 1 万行左右(PS: 大部分都是注释)。 在各个 Ioc 容器的 "性能评测" 当中,
阅读全文
摘要:0. 简介 在某些时候我们可能会需要执行后台任务,或者是执行一些周期性的任务。比如说可能每隔 1 个小时要清除某个临时文件夹内的数据,可能用户会要针对某一个用户群来群发一组短信。前面这些就是典型的应用场景,在 Abp 框架里面为我们准备了后台作业和后台工作者来帮助我们解决这个问题。 后台作业与后台工
阅读全文
摘要:0.简介 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口。除此之外,审计日志信息还包含有每次调用接口时客户端请求的参数信息,客户端的 IP 与客户端使用的浏览器。有了这些数据之后,我们就可以很方便地复现接口产生 BUG
阅读全文
摘要:0.简介 在平时开发 API 接口的时候需要对前端传入的参数进行校验之后才能进入业务逻辑进行处理,否则一旦前端传入一些非法/无效数据到 API 当中,轻则导致程序报错,重则导致整个业务流程出现问题。 用过传统 ASP.NET MVC 数据注解的同学应该知道,我们可以通过在 Model 上面指定各种数
阅读全文
摘要:0.简介 如果你所开发的需要走向世界的话,那么肯定需要针对每一个用户进行不同的本地化处理,有可能你的客户在日本,需要使用日语作为显示文本,也有可能你的客户在美国,需要使用英语作为显示文本。如果你还是一样的写死错误信息,或者描述信息,那么就无法做到多语言适配。 Abp 框架本身提供了一套多语言机制来帮
阅读全文
摘要:0.简介 承接上篇文章我们会在这篇文章详细解说一下 Abp 是如何结合 与 来实现一个完整的多租户系统的权限校验的。 1.多租户的概念 多租户系统又被称之为 Saas ,比如阿里云就是一个典型的多租户系统,用户本身就是一个租户,可以在上面购买自己的 ECS 实例,并且自己的数据与其他使用者(租户)所
阅读全文
摘要:0.简介 Abp 本身集成了一套权限验证体系,通过 ASP.NET Core 的过滤器与 Castle 的拦截器进行拦截请求,并进行权限验证。在 Abp 框架内部,权限分为两块,一个是功能(Feature),一个是权限项(Permission),在更多的时候两者仅仅是概念不同而已,大体处理流程还是一
阅读全文
摘要:0.简介 Abp 框架本身针对内部抛出异常进行了统一拦截,并且针对不同的异常也会采取不同的处理策略。在 Abp 当中主要提供了以下几种异常类型: | 异常类型 | 描述 | | : : | : : | | | Abp 框架定义的基本异常类型,Abp 所有内部定义的异常类型都继承自本类。 | | |
阅读全文
摘要:0.背景 在实际项目当中,我们采用的是 Abp 框架,但是 Abp 框架官方并没有针对 Grpc 进行模块封装。基于此我结合 Abp 与 MagicOnion 封装了一个 Abp.Grpc 模块,它包括服务端和调用端两部分的包。通过这两个包,你可以很方便地在 Abp 框架当中集成 Grpc 实现服务
阅读全文
摘要:0.简介 事件总线就是订阅/发布模式的一种实现,本质上事件总线的存在是为了降低耦合而存在的。 从上图可以看到事件由发布者发布到事件总线处理器当中,然后经由事件总线处理器调用订阅者的处理方法,而发布者和订阅者之间并没有耦合关系。 像 Windows 本身的设计也是基于事件驱动,当用户点击了某个按钮,那
阅读全文
摘要:0.简介 缓存在一个业务系统中十分重要,常用的场景就是用来储存调用频率较高的数据。Abp 也提供了一套缓存机制供用户使用,在使用 Abp 框架的时候可以通过注入 来新建/设置缓存。 同时 Abp 框架也提供了 Redis 版本的 实现,你也可以很方便的将现有的内存缓存替换为 Redis 缓存。 0.
阅读全文
摘要:0.简介 Abp 框架在其内部实现了仓储模式,并且支持 EF Core 与 Dapper 来进行数据库连接与管理,你可以很方便地通过注入通用仓储来操作你的数据,而不需要你自己来为每一个实体定义单独的仓储的实现,通用仓储包含了常用的 CRUD 接口和一些常用方法。 例如: 1.通用仓储定义与实现 在
阅读全文
摘要:0.简介 在 Abp 框架内部实现了工作单元,在这里讲解一下,什么是工作单元? Unit Of Work(工作单元)模式用来维护一个由已经被业务事物修改(增加、删除或更新)的业务对象组成的列表。Unit Of Work模式负责协调这些修改的持久化工作以及所有标记的并发问题。在数据访问层中采用Unit
阅读全文
摘要:0.系列文章目录 1. "一、Abp 框架启动流程分析" 2. "二、模块系统" 3. "三、依赖注入" 4. "四、模块配置" 5. "五、系统设置" 6. "六、工作单元的实现" 7. "七、仓储与 Entity Framework Core" 8. "八、缓存管理" 9. "九、事件总线" 1
阅读全文
摘要:0.简要介绍 Abp 本身有两种设置,一种就是 "上一篇文章" 所介绍的模块配置 Configuration,该配置主要用于一些复杂的数据类型设置,不仅仅是字符串,也有可能是一些 C 运行时的一些变量。另外一种则是本篇文章所讲的 Setting,Setting 主要用于配置一些简单的参数,比如 SM
阅读全文
摘要:0.简要介绍 在 Abp 框架当中通过各种 Configuration 来实现模块的配置,Abp 本身提供的很多基础设施功能的一些在运行时的行为是通过很多不同的 Configuration 来开放给用户进行一些自定义配置的。 比如说缓存模块,我要配置缓存的过期时间,Abp 默认是 1 个小时,但是我
阅读全文
摘要:0.简要介绍 在 Abp 框架里面,无时无刻不存在依赖注入,关于依赖注入的作用与好处我就不在这里多加赘述了,网上有很多解释的教程。在 "[Abp 源码分析]一、Abp 框架启动流程分析" 里面已经说过,Abp 本身在框架初始化的时候我们就可以看到它使用 Castle Windsor 将 Asp.Ne
阅读全文