一、前言
看过一些描述关于AOP切面编程的文章,写的太概念化让人很难理解,下面是我自己的理解,希望能帮到新人,如有错误欢迎指正。
二、AOP是什么,它的应用场景是什么?
AOP也跟IOC,OOP这些思想一样它只是一种编程思想。Autofac、Spring.Net、Castle这些组件实现了AOP切面编程思想的框架。AOP说白了就是在运行时,动态的将代码切入到类的指定方法的指定位置上,这种思想就是面向切面的编程思想。
如果你发现你的方法中有很多重复的代码就可以考虑用aop来精简代码了。比如说你想监控每个方法的耗时,按照传统的方法是每个方法都加上监控代码,如果用AOP思想去解决问题,就可以把跟监控代码放到方法的外面去写。
AOP思想的应用场景:
- AOP切面缓存
- 权限认证
- 错误处理
- 调试
- 日志记录
- 性能监控
- 数据持久化
- AOP事务
三、AOP切面执行流程
AOP切面有点像拦截器,不过跟拦截器有点区别。
四、代码例子
这个例子开发环境使用的是.Net Core 3.0,用的AOP框架是Autofac,通过Nuget安装Autofac.Extras.DynamicProxy组件。