AOP
名词解释
AOP即面向切面编程。
根据维基百科的定义,AOP是一种将函数的辅助性功能与业务逻辑相分离的编程泛型,目的是将横切关注点分离出来,使程序具有更高的模块化特性。
根据百度百科的定义,AOP是可以通过预编译方式和运行期间动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
自己的理解,AOP侧重切面,即将跟业务逻辑不相关的通用功能(如日志记录、异常处理、缓存处理、事务处理…)封装起来,然后业务代码去调用,最后程序在编译或者运行的时候将调用的Aspect代码和业务代码结合在一起。
AOP的实现方式
静态织入(编译时)
指在编译程序的时候编译器将调用的Aspect代码织入到业务代码中,输出整合后的IL。
动态织入(运行时)
指将业务代码和Aspect分别编译,然后在程序运行的时候由虚拟机在必要时织入。
AOP的优缺点
优点
- 有利于代码的编写和维护
- 有利于软件设计的模块化,降低软件架构的复杂性
- 减少了开发工作,省去了大量冗余代码
- 提高了代码质量
缺点
- 增加了理解程序及调试程序的难度
- 程序运行效率有所降低
典型的AOP框架
- PostSharp