基于Lua的AOP架构

基于Lua的AOP架构

ID:27535371

大小:488.50 KB

页数:12页

时间:2018-12-04

基于Lua的AOP架构_第1页
基于Lua的AOP架构_第2页
基于Lua的AOP架构_第3页
基于Lua的AOP架构_第4页
基于Lua的AOP架构_第5页
资源描述:

《基于Lua的AOP架构》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于Lua的AOP架构基于Lua的AOP架构摘要:在本文中,我们描述了一个面向方面的架构基于Lua语言来处理动态AOP。这种架构是由AspectLua组成,一个Lua扩展,支持对象的声明,元对象协议,LuaMOP,即通过统一提供的Lua自监察和反射机制。对象使用AspectLua孤立定义,然后将它们通过LuaMOP编织。AspectLua的一个重要特点是允许的应用程序代码的未声明的对象元素(预接合点)。此外,它结合了一系列功能,使AOP更方便,功能强大。关键字:MOP;反射;AOP;AOP动态;Lua;预接合点1.引言面向

2、方面编程(AOP)因专注于横切关注点模块化而广获关注,。一般情况下,面向方面的方法是静态的-方面代码和组件(基本代码)在编译时(静态织)混合。在这种情况下,需要一特殊的编译器的方面代码与基码相结合。虽然这种策略避免了类型不匹配,它规定了应用程序动态演化的限制。最近一些动态的方法已经被提出了在运行时支持织造。一般来说,他们都建立在一个脚本语言之上如Python[13],Ruby[14],和Smalltalk[22]。我们选择Lua语言来处理动态AOP因为它是动态类型以及它用于在底层解释器时无需为修改延伸它的行为提供设施。这些

3、设施进行了探索在AspectLua和LuaMOP的定义。我们认为,这引入了一个不同的风格面向方面的编程,动态是一个关键问题,编织是在运行时完成的,这两个组件和方面可以插入和删除的应用程序在运行时。此外,Lua的理念简而小。我们的目标是保持这一理念在我们的AOP架构。2.面向方面编程的基本概念面向方面编程强调有必要去耦合那些与该应用程序中的横切组件。虽然目前还没有有关的术语和面向方面编程的要素达成共识,我们在这项工作中参考AspectJ中[10]中使用的术语,因为它是最常用的面向方面的编程语言。这构成AOP的元素有:接合点、

4、切点、通知基于Lua的AOP架构、混入。说明接合点的一个很好的示例是:在代码调用一个方法时,发生调用的那一点被认为是一个接合点。切点用于指定或定义希望在程序流中截获的接合点。切点还包含一个通知,该通知在到达接合点时发生。因此,如果在一个调用的特定方法上定义一个切点,那么在调用该方法或接合点时,AOP框架将截获该切点,同时还将执行切点的通知。通知有几种类型,但是最常见的情况是将其看作要调用的另一个方法。在调用一个带有切点的方法时,要执行的通知将是另一个要调用的方法。要调用的这个通知或方法可以是对象中被截获的方法,也可以是混入

5、的另一个对象中的方法。3.面向方面的基础结构AOP的LUA支持由用于定义动态名为LuaMOP一元对象协议编织方面的一个方面类提供。图1展示出了组成,我们称之为AspectLuaAOP架构的块。第一层是由与它的反光设施Lua语言的。第二层是由所述LuaMOP设施取的Lua反射机制的优势。LuaMOP提供了一组支持动态引入第三层定义方面的元类。AspectLua提供方面类AOP元素的定义。程序员可以利用AspectLua的任何LuaMOP或者Lua的反光特性。此外,AspectLua不违反Lua语言的内在机制,因为它是建立在L

6、ua的反射功能基础上。图1:AspectLua结构3.1LUAMOPLuaMOP是支持的元表示的创建以构成上述的Lua运行时环境中的每个元件的元对象协议:变量,函数,表格,用户数据等。各元件由一元类提供一组的方法来查询和修改基类的每个元素的行为来表示。它们在元对象是基间位类(图2)的分层方式组织的。从这个元类衍生出来的变量元,元函数,元协程,元表,以及元的UserData元类。此外,LuaMOP还提供了一个监视器类,以监测的Lua运行时环境中的事件的发生。基于Lua的AOP架构图2:LuaMOP类图通过LuaMOP提供的元

7、表示通过的getInstance(实例)方法的调用创建。此方法返回对应于与由实例参数描述名称或参考的对象的元对象。此元对象是上述的元类的一个实例。对于每个元类有描述,并在支持改变的元对象的行为的方法。因此,的getType()和的getName()方法可以由所有的元类被调用,因为这些方法都是元对象的元类的一部分。这些方法返回,分别为元对象类型和名称。在destroy()方法来断开元对象。addPreGet,addPosGet,addPreSet和addPosSet方法插入一个函数之前(或之后)可变读或写被执行。图3展示出了

8、使用这些函数的一个例子。在第一行,余量变量被设置为10.在下一行,则创建一个元对象来表示平衡变量。以下四个行声明的checkRead功能,并与metavar元对象该功能相关联,通过addPreGet方法。这些功能的主要目的是,以控制进入平衡变量。因此,如果由addPreGet方法插入函数返回一个值从零不

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。