AOP编程-理论篇
本节内容主要讲解AOP编程理念,包括概念讲解,使用AOP的优势,如何实现AOP,常见的实现AOP的方法。
1、AOP的概念
AOP是Aspect Oriented Programming的缩写,意思是“面向切面编程”。何为“面向切面编程”,顾名思义,针对程序中某个“切面”进行设计扩展和开发;那么,何为“切面”呢?
“切面”是逻辑上的意义,在实际开发过程中,并没有切面这个说法,只是从逻辑上看,可以把程序切分开,针对这个切开的这个面自然就是“切面”了。从实际开发来看,比如在ASP.NET MVC中,众所周知,每一个页面都是一个方法(Action)的执行结果,Action会返回html,发送到前端浏览器上,浏览器在进行解析,才能变成用户能看到页面。那么,如果需要在每个Action执行之前,对当前登录的用户进行权限验证,检查这个人是否有权限访问这个页面,这在实际开发过程中是很常见的场景和需求。按照一般的思维,需要在每个Action方法的前面部分执行权限检查逻辑,如果有权限就继续执行,没权限则返回用户无权限的页面。显而易见,这必然违背了软件开发的DRY原则。我们要做的只不过是在每个Action执行前进行权限验证逻辑。以上功能如果用AOP思想来进行实现,可以从逻辑上(先不管是否可以实现)把所有的Action方法的执行前切分为一个切面,我们要做的就是在这个切面上,添加权限验证的逻辑。
注意:以上功能在ASP.NET MVC中可以通过Authorization Filter来实现,如果以上代入过程有不解的地方,可以把该场景换成其他的场景,比如在ASP.NET中进行权限验证。
2、使用AOP的优势
可以发现,如果使用AOP理念进行开发,将很大程度上减少我们的代码量,这只是AOP带来的最基本的好处。不难发现,如果在每个Action中都进行权限验证的话,不同的coder的实现方式不尽相同,代码风格不尽相同,命名规范不尽相同......,当然这些是可以通过规范来进行改善的,但是如果能在统一的地方进行该操作,是不是会更好呢。其次AOP能很大程度上提高软件架构的稳定性(稳定性:添加额外的功能时,不需要对原有代码进行大量调整)。