Home > 新闻·媒体 > 媒体报道
AOP技术在自助设备运行管理系统中的应用
—— 深圳市紫金支点技术股份有限公司 张永

      20世纪90年代初,Xerox PARC的研究人员提出了一种新的编程思想,借此可弥补面向对象思想的局限性,有效地提高了开发效率。随着研究的深入和完善,该思想发展成为一套完整的程序设计思想,即面向方面编程(AOP)。此后,各种应用AOP的技术便雨后春笋般地出现了。
      一、AOP技术简介
      AOP可以说是OOP(面向对象编程)的补充和完善,AOP和OOP是面向不同领域的编程思想。OOP针对问题域存在的对象及其属性和行为,引入封装、继承和多态性等概念来建立一种对象层次结构的抽象。当需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许定义垂直的关系,但并不适合定义水平关系。例如在日志功能中,日志代码、事务控制、安全控制往往水平地散布在所有对象层次中,而这些与核心业务功能却是无关的。这种散布在各处的无关的代码被称为横切(Cross-cutting)代码。如果应用面向对象的思想进行设计,则无法摆脱大量重复性的代码,缺乏很好的拓展性,耦合度也高,且不易维护。
      AOP则从另外一个视角,像一把刀横切各个对象,将那些与业务无关、却为各业务模块所共同调用的逻辑或责任分离出来,封装到一个可重用的模块,以减少系统的重复代码,达到解耦、重用的目的,并有利于实现未来的可拓展性和可维护性。AOP的核心思想就是将应用程序中的业务逻辑和对其提供支持的通用服务分离开来。
      AOP的实现主要包含两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代对原有对象行为的执行;二是采用静态植入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间植入有关“方面”的代码。殊途同归,实现AOP的技术特性都是相同的,包括以下内容:
      切面(Aspect),即关注点的模块化,这个关注点可能会横切多个对象。事务管理就是J2EE应用中一个横切关注点的典型例子。
      连接点(Joinpoint),是程序执行过程中某个特定的点。通过声明一个 org.aspectj.lang.JoinPoint 类型的参数可以使通知(Advice)的主体获得连接点的部分信息。
通知,是在切面的某个特定的连接点上执行的动作。通知有多种类型,包括around、before和after等。
      切入点(Pointcut),是匹配连接点的断言。通知与一个切入点表达式关联,并在满足这个切入点的连接点上运行。
      上述的技术特性组成了基本的AOP技术,大多数AOP工具均包含这些技术。
      二、AOP技术的应用
      随着金融信息化的不断深入,自助服务设备逐渐成为银行服务客户的重要渠道。自助设备作为银行的服务窗口,代表着银行形象,承载着业务信息,分流了柜面压力,同时为客户提供高效、便捷的服务。然而,随着自助设备数量的快速增长,商业银行在自助设备运营管理方面显得相对滞后、低效。自助设备运行管理系统是一个基于J2EE架构的软件产品,主要功能是实现自助设备的管理,包括设备监控功能、版本控制功能、远程管理功能、故障处理功能、系统管理功能等模块,每个模块都会涉及日志、权限、异常、事务等处理,而这些公共处理在传统的方式上,不可避免地会和业务代码耦合在一起,增加了系统分析设计的复杂性,降低了开发人员的效率,同时也不利于今后的拓展维护。AOP引入自助设备运行管理系统的设计后,可以分离出公共处理,最大限度地将公共处理和业务逻辑进行解耦。如此一来,可以切实提高开发效率,降低系统的复杂性。


选自《中国金融电脑》2008年8月刊