摘要:
部署 参照 "ABP示例项目BookStore搭建部署" 项目解构 1)、动态脚本代理 启动项目时,默认会调用两个接口 ServiceProxyScript会解析项目路由,动态生成api路径。此两个接口封装在了 程序集中。一旦引用该程序集便会自动调用接口。 1.1)、虚拟文件系统 说到虚拟文件系统, 阅读全文
摘要:
参考ObjectPool对象池设计原理还原一个简易的Provider模式。 存储对象的数组ObjectWrapper内元素的取、还操作通过Interlock.CompareExchange巧妙的实现,并且是线程安全的。 取操作: 。取完后将元素置为null 还操作: 如果元素为null,则赋值 设计 阅读全文
摘要:
Micosoft.Extension.ObjectPool 源码架构、模式分析: 三大基本对象: 1. ObjectPool抽象类 2. ObjectPoolProvider抽象类 3. IPooledObjectPolicy接口 ObjectPool的默认实现是DefaultPool,对象池的创建 阅读全文
摘要:
abp依赖注入的原理剖析 请先移步参考 "[Abp vNext 源码分析] 3. 依赖注入与拦截器" 本文此篇文章的补充和完善。 abp的依赖注入最后是通过IConventionalRegister接口的AddType方法实现的。先看下该接口: 该接口定义了三个方法,支持传入程序集、类型数组、具体类 阅读全文
摘要:
相关模块 1. AbpAspNetCoreModule 2. AbpAspNetCoreMvcModule 3. AbpAspNetCoreMvcContractsModule abp通过这三个模块加载并配置了 asp.net core。,最主要的就是AbpAspNetCoreMvcModule模块 阅读全文
摘要:
一、前言 参照前篇《4. abp中的asp.net core模块剖析》,首先放张图,这也是asp.net core框架上MVC模块的扩展点 二、abp的mvc对象 AbpAspNetCoreMvcOptions类 从这个类的名称来看,这个是abp框架里面的asp.net core配置mvc选项类,是 阅读全文
摘要:
一个简单、基于AbpInterceptor的拦截器示例: 拦截器调用顺序,可参考打上断点调试分析: AutofacRegistration.Populate(内部调用Autofac.Extras.DynamicProxy) SimpleAsyncInterceptor.Intercept Castl 阅读全文
摘要:
abp拦截器基本定义 拦截器接口定义: 默认抽象类定义: abp的拦截器实现是基于Autofac.Extras.DynamicProxy,这个包依赖两个组件:Autofac、Castle.Core(实质上是调用内部组件DynamicProxy实现动态代理)。关于此组件的资料参考 ".NET 通过 A 阅读全文
摘要:
之前部署过BookStore项目,但是换了新电脑也想好好学习下这个示例项目,于是在新电脑上重新拉了Git上的ABP项目代码,一编译生成BookStore项目就报错,可以参考 "abp示例项目BookStore编译报错" 。解决了这个问题之后又报错了,截图如下: 我一开始以为是我的数据库链接语句配置错 阅读全文
摘要:
abp中将生命周期事件抽象为4个接口: abp定义了一个模块生命周期接口,该接口只有两个方法,用于初始化和关闭。 这个接口的参数是IAbpModule接口的类型,也就是派生自AbpModule的模块类型。该接口有一个默认实现,是一个抽象类,主要是用于复用。 abp根据四个生命周期分别有四个类型,这四 阅读全文