理解AOP
AOP全称Aspect Oriented Programming,即面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
我理解其实就是在程序运行时,动态的将需要执行代码段切入到对象的某个方法指定的某个位置。
AOP和OOP是从不同维度考虑的,我理解算得上是对OOP思想的一种补充吧
代理模式
提起AOP就不得不提到代理模式,它是一种结构型的设计模式。
让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。
简单理解就是 客户端不会直接与实际实现类打交道,而是通过对实现类的进一步封装成代理类,该代理类不会改变实现类原本的功能(行为),只是在实现类的方法前后添加一些自定义行为用于记录。
参考下图:
代理模式的应用场景
代理模式的应用场景多种多样
比如:
虚拟代理:针对宝贵资源,可能比较消耗系统资源,可通过代理模式针对类型的初始化延迟到真正需要时进行加载,一般配合享元模式实现池化技术。
保护代理:需要满足一定条件的客户端(鉴权)才能够使用,可考虑使用保护代理,预防恶意程序使用此对象。
日志记录:需要记录代理对象执行前后的过程时间等等。
缓存代理:针对一些重复请求,考虑使用此模式。
动态代理:此模式一般依靠语言的反射特性,通过接口或继承方式,实现针对不同的被代理类,统一实现代理行为。
我理解动态代理模式其实就是对AOP的一种实现
.net core 中AOP的常见场景
- Filter 过滤器方式 针对MVC中提供不同类型的Filter的钩子事件,提供自定义的行为。
- Middle 中间件针对http的管道请求,可添加自定义管道节点,针对http的一些metadata数据进行个性化处理。
- IOC 容器动态代理,对容器内的实现类添加动态的代理行为。
先介绍到这里,接下来会讲.net core 原生实现动态代理模式。
参考链接:
标签:core,实现,代理,模式,AOP,net From: https://www.cnblogs.com/dyhuang/p/16645897.html