一.简要说明 ABP vNext 框架在使用依赖注入服务的时候,是直接使用的微软提供的 Microsoft.Extensions.DependencyInjection 包.这里与原来的 ABP 框架就不一样了,原来的 ABP 框架还需要抽象出来一个 IIocManager 用来管理整个 IoC 容器,现在则直接操作 IServiceCollection 与 IServiceProvider 进行组件的注册/解析. 这里需要注意的是,虽然现在的依赖注入服务是使用微软官方那一套库进行操作,但是 A…
一.简要介绍 ABP vNext 是 ABP 框架作者所发起的新项目,截止目前 (2019 年 2 月 18 日) 已经拥有 1400 多个 Star,最新版本号为 v 0.16.0 ,但还属于预览版,并不适合应用到生产环境.新的 ABP vNext 框架完全是基于 ASP .NET Core 进行开发,其完全模块化的组件库能够让开发人员拥有更多的选择空间. ABP vNext 框架核心库比 ABP 框架更加精简,因为将原有许多的组件从其核心库抽离成独立的组件.这样开发人员可以更加灵活的选择自己…
一.简要说明 ABP vNext 当中的审计模块早在 依赖注入与拦截器一文中有所提及,但没有详细的对其进行分析. 审计模块是 ABP vNext 框架的一个基本组件,它能够提供一些实用日志记录.不过这里的日志不是说系统日志,而是说接口每次调用之后的执行情况(执行时间.传入参数.异常信息.请求 IP). 除了常规的日志功能以外,关于 实体 和 聚合 的审计字段接口也是存放在审计模块当中的.(创建人.创建时间.修改人.修改时间.删除人.删除时间) 二.源码分析 2.1. 审计日志拦截器 2.1.1…
一.简要介绍 ABP vNext 框架本身就是围绕着 DDD 理念进行设计的,所以在 DDD 里面我们能够见到的实体.仓储.值对象.领域服务,ABP vNext 框架都为我们进行了实现,这些基础设施都存放在 Volo.Abp.Ddd.Domain 项目当中. 本篇文章将会侧重于理论讲解,但也只是一个抛砖引玉的作用,关于 DDD 相关的知识可以阅读 Eric Evans 所编写的 <领域驱动设计:软件核心复杂性应对之道>. PS: 该书也是目前我正在阅读的 DDD 理论书籍,因为基于 DDD 理…
一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 IModuleManager 和 IModuleLoader 来协同工作,其他的代码逻辑并无太大变化. Abp vNext 规定每个模块必须继承自 IAbpModule 接口,这样 vNext 系统在启动的时候才会扫描到相应的模块.与原来 Abp 框架一样,每个模块可以通过 DependsOnAttr…
一.简要说明 本篇文章主要剖析与讲解 Abp vNext 在 Web API 项目下的启动流程,让大家了解整个 Abp vNext 框架是如何运作的.总的来说 ,Abp vNext 比起 ABP 框架更加精简.因为在 vNext 版本当中,原来归属于 Abp 库的许多内置的基本组件 (组织单元.拦截器等) 被拆分成了单独的模块,这样我们来看它整个启动流程就更加地直观清晰. 二.源码分析 要分析其源码,我这里是从他官方的 Demo 模板入手的,你可以在 https://abp.io 上构建你自己的…
一.简要介绍 ABP vNext 针对于应用服务层,为我们单独设计了一个模块进行实现,即 Volo.Abp.Ddd.Application 模块. PS:最近博主也是在恶补 DDD 相关的知识,这里推荐大家看一下 ThoughtWorks 的 DDD 相关文章. 关于 DDD 相关的著作,我这儿还是推荐经典的那三本<领域驱动设计:软件核心复杂性应对之道>.<实现领域驱动设计>.<领域驱动设计精粹>. DDD 的学习整体来说是比较枯燥的,而且偏理论化的知识.所以需要结合大…
一.简要说明 在上篇文章里面,我们在 ApplicationService 当中看到了权限检测代码,通过注入 IAuthorizationService 就可以实现权限检测.不过跳转到源码才发现,这个接口是 ASP.NET Core 原生提供的 "基于策略" 的权限验证接口,这就说明 ABP vNext 基于原生的授权验证框架进行了自定义扩展. 让我们来看一下 Volo.Abp.Ddd.Application 项目的依赖结构(权限相关). 本篇文章下面的内容基本就会围绕上述框架模块展开…
一.简要说明 文章信息: 基于的 ABP vNext 版本:1.0.0 创作日期:2019 年 10 月 23 日晚 更新日期:暂无 ABP vNext 针对用户可编辑的配置,提供了单独的 Volo.Abp.Settings 模块,本篇文章的后面都将这种用户可变更的配置,叫做 参数.所谓可编辑的配置,就是我们在系统页面上,用户可以动态更改的参数值. 例如你做的系统是一个门户网站,那么前端页面上展示的 Title ,你可以在后台进行配置.这个时候你就可以将网站这种全局配置作为一个参数,在程序代码中…
一.简要介绍 ABP vNext 封装了两种事件总线结构,第一种是 ABP vNext 自己实现的本地事件总线,这种事件总线无法跨项目发布和订阅.第二种则是分布式事件总线,ABP vNext 自己封装了一个抽象层进行定义,并使用 RabbitMQ 编写了一个基本实现. 在使用方式上,两种事件总线的作用基本相同. 事件总线分布在两个模块,在 Volo.Abp.EventBus 模块内部,定义了事件总线的抽象接口,以及本地事件总线 (ILocalEventBus) 的实现.分布式事件总线的具体实现,…