AOP技术及其应用 AOP技术及其应用

AOP技术及其应用

  • 期刊名字:福建电脑
  • 文件大小:281kb
  • 论文作者:闫兆振,贾作皆
  • 作者单位:山东科技大学
  • 更新时间:2020-10-30
  • 下载次数:
论文简介

2006年第7期福建电脑63AOP技术及其应用闫兆振,贾作皆(山东科技大学信息学院山东青岛266510)[摘要]: AOP技术利用横切关注点的机制,可以很好的解决一些00P及面向过程编程所不能解决的问题,作为一种”新的编程思想得到了越来越多的关注。本文首先介绍了研究AOP所涉及的基本技术和概念,并给出了AOP技术的一个应用实例。[关键词]: AOP,横切关注点,方面面向对象编程(OP)技术在现今的编程领城取得了巨大的术 ,利用截取消息的方式,对该消息进行装饰,以取代原有对象成功,对象(Object)的概念也已经作为计算机编程领域的基础概行为的执行; 二是采用静态织人的方式,引人特定的语法创建念深人人心。对象提供了对现实领城中的问题的一个很好的抽“方面",从而使得编译器可以在编译期间织人有关“方面”的代象,但是,在很多的编程问题中,这些对象可能会因为混合的属码。 然而殊途同归实现AOP的技术特性却是相同的,分别为:性和与对象最初意图不-致的操作而变得混乱,从而不能够很1)连接点(join point):是程序执行中的一个精确执行点,清晰地描述程序所要实现的一些重要的设计思想。而这些问题例 如类中的一个方法。它是一个抽象的概念,在实现AOP时,并使用00P技术并不能很好地解决,比如在日志管理、权限控制、不需要去定义一个连接点。事务处理等方面,应用00P将这些内容封装为对象的行为则会2)切入点(point cut):本质上是一个捕获连接点的结构。在产生大量的代码重复,虽然通过一些设计模式可以减少这种重AOP 中,可以定义一个切入点,来捕获相关方法的调用。复,但我们还有更好的解决办法,那就是AOP(Aspect Oriented3)通知(advice):是切人点的执行代码,是执行“方面"的具Programming)。AOP是最近兴起的一种编程思想,它能很好地解体逻辑。决一些00P及面向过程编程所不能解决的问题,是00P思想4)方面(aspect):连接点和通知结合起来就是“方面”,它类的有益补充。AOP利用一种称为“横切"的技术,剖解开封装的对似于 00P中定义的一个类,但它代表的更多是对象间横向的关象内部,并将那些影响了多个类的行为封装到一个可重用模块,系称为“Aspect" ,即方面,这样就有利于减少系统的重复代码,降5)引人(itroduce):为对象引入附加的方法或属性,从而达低模块间的耦合度,并有利于未来的可操作性和可维护性。到修改对象结构的目的。 有的AOP工具又将其称为mixin。AOP作为一种提高软件的“概念分离”技术,已经受到越来越多上述的技术特性组成了基本的AOP技术,大多数AOP工的重视。具均实现了这些技术。它们也是研究AOP技术的基本术语。下1.什么是AOP面介绍AOP技术中的几个重要概念:AOP ( Aspeet- -Oriented Progranming)最早是由施乐(Xerox) 2.2 横切公司在美国加州硅谷Palo Alo研究中心(PARC)的首席科学家、“横 切“是AOP的专有名词,是在一个给定的编程模型中穿加拿大大不列颠哥伦比亚大学教授Gregor Kicgales 等人在越既定 的职责部分(比如日志记录和性能优化)的操作。它是一1997年的欧洲面向对象编程大会(ECOOP 97)上提出的一种编种蕴含 强大力量的相对简单的设计和编程技术,尤其是用于建程范式。他们在1990年就开始对面向对象思想的局限性进行了立松散耦合 的、可扩展的企业系统时。使用“横切"技术,AOP把分析,研究出了这样一种新的编程思想,并借助这一思想或许可软件系统分为两个部分:核心关注点和横切关注点。业务处理的以通过减少代码重复模块从而帮助开发人员提高工作效率。随主要 流程是核心关注点,与之关系不大的部分是横切关注点。横着研究的逐渐深人, AOP也逐渐发展成- - 套完整的程序设计思切关注点的一个特 点是,他们经常发生在核心关注点的多处,而想。各处都基本相似。比如权限认证、日志、事务处理。AOP的作用在AOP,从字面的理解来看就是面向切面的编程,用--个比较于分离系统中的各种关注点,将核心关注点和横切关注点分离通俗的例子来说,比如在访向多个对象前需要进行权限检查,那开来。么如果按照面向对象的思路来说,权限检查势必会成为这多个如果不使用横切技术,软件开发是怎样的情形呢?在传统的对象的行为。如果每个对象都需要去实现这些行为势必会造成程序中 ,由于横切行为的实现是分散的,开发人员很难对这些行大量重复代码的产生,写程序也会变得枯燥无味。但我们可以将为进行逻辑上的实现或更改。例如,用于日志记录的代码和主要权限检查看作是一个切面,所有对这些对象的访问都要经过这用于 其它职贵的代码缠绕在一起。根据所解决的问题的复杂程个切面。AOP技术正是通过编写横切关注点的代码,即“方面",度 和作用域的不同,所引起的混乱可大可小。更改- - 个应用程序分离出通用的服务以形成统一的功能架构。它能够将应用程序的 日志记录策略可能涉及数百次编辑_即使可行,这也是个中的商业逻辑同对其提供支持的通用服务进行分离,使得开发令 人头疼的任务。人员从重复解决通用服务的劳动中解脱出来,而仅专注于企业横切技术分为动态横切和静态横切,动态横切是通过切人的核心商业逻辑。.A0P就是这样一种关注点分离技术,通过运用点和连 接点在一个方面中创建行为的过程,连接点可以在执行Aspect这种程序设计单元,允许开发者使用结构化的设计和代时 横向地应用于现有对象。动态横切通常用于帮助向对象层次码,反映其对系统的认识方式。要使设计和代码更加模块化、更中 的各中国煤化工E。在很多应用场景中,动具结构化,就要使关注点局部化而不是分散于整个系统中。同态横切二黄切技术的核心主要包括时,需使关注点和系统其他部分保持良好定义的接口,从而真正join poC N M H Cadvce(通知)和epee达到“分离关注点分而治之”的目的。面)。静态横切和动态横切的区别在于它不修改-一个给定对象的2.AOP的基本技术和概念执行行为。相反,它允许通过引入附加的方法字段和属性来修改2.1 AOP实现的基本技术对象的结构。此外,静态横切可以把扩展和实现附加到对象的基实现AOP的技术,主要分为两大类:一是采用动态代理技本结构中。在AOP实现中,通常将静态横切称为introduce或者福建电脑2006年第7期mixin。LogritlisoinPoin. geSignaeret:osuring0:2.3关注点一个 关注点(concem)就是一个特定的目的,一块我们感兴如果仅仅熟悉Java编程,会发现有很多关键字是Java语言趣的区域, - 段我们需要的逻辑行为。在AOP中,我们将那些具中不曾包含的,它们都是AspeeJ提供的。有公共逻辑的,与其他模块的核心逻辑纠缠在一起的行为称为分析上述的代码,首先是方面的声明,它类似于Java 当中.“横切关注点”,因为它跨越了给定编程模型中的典型职责界限。的类声明定义了一个方面Autolog,在这个方面中分别包含了从技术的角度来说,一个典型的软件系统包含- 些核心的切点和通知。关注点和系统级的关注点。举个例子来说,一个信用卡处理系统切点共有四个:customMehod vpublicMehoed JogbjcCalls的核心关注点是借贷存入处理,面系统级的关注点则是日志、和lgbaCall,方面AutoLog首先声明-个带参数的抽象切点事务完整性授权、安全及性能问题等,许多关注点,即横切关注customMethod,子类可以通过重写该切点决定日志决定的范围。点,会在多个模块中出现。如果使用现有的编程方法,横切关注并利用customMethod声明了另外-个切点publicMethod,因此点会横越多个模块,结果是使系统难以设计理解、实现和演进。切点publicMethod将捕捉所有customMethod内部所有方法和AOP能够比上述方法更好地分离系统关注点,从而提供模块化org-apache.cactus包中的所有公共方法的执行。当这些方法被调的横切关注点。2.4方面用时,就会执行切点的advice 代码。而在切点中execution是-方面是实现横切关注点的实体,就像ooP中能完成独立功个原始的Pointeut(就象int是- - 种原始的Java类型)。它选择与能的组件。方面定义切入点和通知(advice),并由方面编译器来括号中定义的方法说明匹配的任何方法的执行,方法说明允许编译,以便将横切织人到现有的对象中,然后织人器则使用这些包含通配符。切点logObjecCalls则捕捉Logger类中的所有方法信息来构建最终系统。的执行。第三个切点比较待殊,它使用&& !合并了前两个切点,2.5织入这意味着这个切点捕捉了除Logger类中的公共方法以外,切点织人是指把方面自动地织人到软件系统的各个功能模块中customMethod 内部的所有方法和org.apache.cactus中所有的公的动作,它依照提供给它的规则把不同的执行逻辑段混编起来,共方法的执行。通知在切点中被用来完成实际的日志纪录。通知分为三种,这样就可以把非功能代码加入到功能代码中,从而改变了系统分别为before ater和around,如上述代码中定义的通知:的结构和行为。织人是实现AOP的一个重要机制,从总体方法上来讲,可beorel(ogbleCallsl以分为两类:动态织人和静态织人。静态织人是指在业务功能代码中的适当位置,比如某段代码执行前,或执行后,将方面中的编码插人,从而形成混合的编码方面中的编码在程序运行前,该通知的定义表示的含义是,如果customMethod的内部方已被内联至业务功能代码中,因此,代码可以被优化。从而使织法 或org.apache.cactus中所有的公共方法(Logger类的公共方法人产生的开销最小化,最终产生的混合代码,其执行速度接近为除外)被执行 则在这些方法执行之前,需要先执行该通知所定使用AOP方式编写的代码。但是,静态织人无法做到在程序运义的逻辑。针对于某一个具体的类,使用一个子继承抽象类:行时,根据运行上下文动态的决定插入的方面代码,动态织入则publie aspeet Customlog extends Aulolog可以做到这一点。动态织人可以在程序运行时,根据上下文决定调用的方面,它们的先后顺序,增加或删除-一个方面等。3. AOP的应用实例(custonclss2);近几年,AOP技术受到了越来越多的关注,随着研究的逐渐深人,各种应用AOP的技术也应运而生。AOP 技术是在Java这样,原有代码无需做任何改变,当指定类customClass和平台下最先得到应用的,面AspectJ是目前最成熟的也是应用得customclass2 的内部方法被调用时,相关的日志记录就会输出。最普遍的AOP工具,AspectJ通过定义一套Java语言的扩展系4. 结束语统,使开发者可以方便的进行面向方面的开发。下面就以.目前,AOP作为一种编程技术仍然是- -种新的思想。它是AspeuJ为例说明使用AOP技术的8志记录的实现过程。一种 对代码进行再分析、再处理而解决横切关注点问题的技术,设定我们的开发项目中需要应用到日志记录,我们可以从能够很好地解决 -些00P及面向过程编程所不能解决的问题,这个需求中识别出横切关注点---日志记录。 因此,我们需要首其提 出不是一种00P的替代,面是00P思想的有益补充。虽然先定义关于“日志记录”的aspect:有越来越多的人开始关注和研究AOP,但作为一种新思想,要成Abostract aspet AutoLag为一个主流的编程方法还有很长的路要走。Abstract pointeut cusomMethod(Oject ob);rB参考文献:apache.c...1. Spring and Aspcy 2005, Intermaional Confetence on Aspect- OrientedSofware Development2. Robent E.Flman What Is Apeat -Oriented Progamming Reristed.beorel:aogbleCalls03.石丹丹,王静,熊前兴,面向方面编程模式的探讨,武汉理工大学学报0),2005 1:92-95.Lopgerentny(hisJoinPoint BetSigature0-tsSring0);4.郭东光,张立臣面向方面软件开发研究,计算机应用研究],2005 8:36-38.5. AOP中国煤化I)edsig/ rpc...6. AOPn/articles/241012.html.MYHCNMH G

论文截图
上一条:谈DRM技术
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。