|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。1、AOP编程概览
面向对象编程手艺进进软件开辟的支流对软件的开辟体例发生了极年夜的影响,开辟者能够用一组实体和这些实体之间的干系将体系抽象地暗示出来,这使得他们可以计划出范围更年夜、更庞大的体系,开辟周期也比之前更短。OO开辟的独一成绩是,它实质上是静态的,需求的渺小变更便可能对开辟进度形成严重影响。
Aspect-OrientedProgramming(AOP)是对OO手艺的增补和完美,它同意开辟者静态地修正静态的OO模子,机关出一个可以不休增加以满意新增需求的体系,就象实际天下中的对象会在其性命周期中不休改动本身,使用程序也能够在开展中具有新的功效。
比方,很多人想必有过在开辟复杂的Web使用时将Servlet作为出口点的履历,即用Servlet吸收HTML表单的输出,经由处置后前往给用户。入手下手时的Servlet多是十分复杂的,只要恰好满意用户需求的起码量的代码。但是,跟着“第二需求”的完成,比方完成非常处置、平安、日记等功效,代码的体积就会增添到本来的3、四倍――之以是称之为“第二需求”,是由于Servlet的基础功效是承受和处置用户的哀求,关于这个方针来讲,日记、平安之类的机制并非必不成少的。
AOP同意静态地改动OO的静态模子,不用修正本来的静态模子也能够到场满意第二需求所需的代码(实践上,乃至连本来的源代码也不必要)。更使人称奇的是,厥后到场的代码常常能够会合在一个中央,而不用象纯真利用OO时那样将厥后到场的代码分离到全部模子。
2、基础术语
在先容AOP开辟实例之前,我们先来懂得几个尺度的AOP术语,以便更好地把握相干的观点。
Cross-cuttingconcern
在OO模子中,固然年夜部分的类只要单一的、特定的功效,但它们一般会与其他类有着配合的第二需求。比方,当线程进进或分开某个办法时,我们大概既要在数据会见层的类中纪录日记,又要在UI层的类中纪录日记。固然每一个类的基础功效极然分歧,但用来满意第二需求的代码却基础不异。
Advice
它是指想要使用到现有模子的附加代码。在本例中,它是指线程进进或加入某个办法时要运转的日记代码。
Point-cut
这个术语是指使用程序中的一个实行点,在这个实行点上必要接纳后面的cross-cuttingconcern。在本例中,当线程进进一个办法时呈现一个Point-cut,当线程分开办法时又呈现另外一个Point-cut。
Aspect
Point-cut和advice分离在一同就叫做aspect。鄙人面的例子中,我们经由过程界说一个point-cut并赐与得当的advice到场了一个日记(logging)aspect。
AOP另有别的很多特征和术语,比方引进(Introduction),即把接口/办法/域引进到现有的类――它极年夜地拓宽了开辟者的设想力。不外本文只先容一些最基础的持性,熟习这里先容的观点后,你再深切一步研讨AOP的别的特征,看看怎样在本人的开辟情况中利用它们。
3、现有的框架
今朝最成熟、功效最丰厚的AOP框架当数AspectJ,AspectJ已成为年夜多半别的框架扈从的尺度。可是,AspectJ也走出了非同平常的一步,它的完成为Java言语增加了新的关头词。固然新的语法其实不难学,但却意味着我们必需换一个编译器,还要从头配制编纂器,只要如许才干顺应新的语法。在范围较年夜的开辟组中,这些请求大概难以办到,由于全部开辟小组城市遭到影响。因为言语自己的变更,开辟小组把AOP手艺引进到现有项目标进修周期随之延伸。
如今我们必要的是如许一个框架,它能够便利地引进,且不会对本来的开辟和机关历程发生任何影响。满意这些请求的框架不止一个,比方JBossAOP、Nanning、Aspectwerkz(AW)。本文选用的是Aspectwerkz,由于它多是最简单进修的框架,也是最简单集成到现有项目标框架。
Aspectwerkz由JonasBoner和AlexandreVasseur创立,它是今朝最疾速、功效最丰厚的框架之一。固然它还缺少AspectJ的某些功效,但己足以满意年夜多半开辟者在很多情况下的必要。
Aspectwerkz最使人感乐趣的特征之一是它可以以两种分歧的形式运转:联机形式和脱机形式。在联机形式下,AW间接干涉属于JVM的底层类装进机制,截取一切的类装进哀求,对字节码实行立即转换。AW供应了干涉类装进历程的很多选项,别的另有一个替换bin/java命令的封装剧本,这个剧本可以依据Java版本和JVM才能主动天生一组可运转的配制。关于开辟者,联机形式有很多长处,它能拔出就任何类装进器并在类装进时代天生新的类。也就是说,我们不用手工修正使用程序的类,只需按一般的体例部署便可。不外,联机形式请求对使用服务器举行分外的配制,偶然这一请求大概很难满意。
在脱机形式下,天生类必要二个步骤。第一步是用尺度的编译器编译,第二步是重点――以脱机形式运转AWcompiler编译器,让它处置重生成的类。编译器将修正这些类的字节码,依据一个XML文件的界说,在得当的point-cut拔出advice。脱机形式的长处是AWcompiler天生的类可以在任何JVM1.3以上的假造机运转,本文上面要用的就是这类形式,由于它不必要对Tomcat作任何修正,只需对机关历程稍作修正就能够照搬到年夜多半现有的项目。
4、安装
本文将以一个复杂的Web使用程序为例,它用Ant编译,部署在Tomcat4+Servlet容器上。上面我们假定读者己筹办好上述情况,包含JVM1.3+,同时Tomcat被设置成从webapps文件夹主动部署使用,主动将WAR扩大到目次(这是Tomcat默许的操纵体例,因而只需你还没有修正Tomcat的运转体例,上面的典范可间接运转)。我们将把Tomcat的安装地位称为%TOMCAT_HOME%。
⑴从http://apectwerkz.codehaus.org/下载Aspectwerkz,解开紧缩到得当的地位。我们将把这个地位称为%ASPECTWERKZ_HOME%。
⑵设置%ASPECTWERKZ_HOME%情况变量。
⑶将Aspectwerkz到场到PATH情况变量,即设置setPATH=%PATH%;%ASPECTWERKZ_HOME%inaspectwerkz
⑷下载本文的树模程序,将它放进%TOMCAT_HOME%webapps文件夹。
⑸将Aspectwerkz的运转时类到场到Tomcat的classpath。你能够将它的JAR文件放进示例使用的WEB-INFlib文件夹,或放进%TOMCAT_HOME%commonlib。
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。 |
|