频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

8.3.3 面向方面编程AOP

作者: 罗江华 朱永光 出处:电子工业出版社  2008-03-19 19:06    砖    好    评论   进入论坛
阅读提示:《.NET Web高级开发》可以使读者通过阅读进一步的了解和掌握.NET,本文介绍了面向方面编程。

8.3.3  面向方面编程AOP

AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。

AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析。他们研究出了一种新的编程思想,借助这一思想或许可以通过减少代码重复模块从而帮助开发人员提高工作效率。随着研究的逐渐深入,AOP也逐渐发展成一套完整的程序设计思想,各种应用AOP的技术也应运而生。

AOP技术在Java平台下是最先得到应用的。AspectJ通过定义一套Java语言的扩展系统,使开发者可以方便地进行面向方面的开发。AspectJ在2002年被转让给Eclipse Foundation,从而成为在开源社区中AOP技术的先锋,也是目前最为流行的AOP工具。AspectWerkz则是基于Java的动态的轻量级AOP框架。AspectWerkz仍然是开源社区中的产品,由BEA System提供赞助。Spring基于自身的IOC容器实现AOP,Spring AOP作为一种非侵略性、轻型的AOP框架,开发者无需使用预编译器或其他的元标签,在Java程序中应用AOP。目前,AOP的功能完全集成到了Spring事务管理、日志和其他各种特性的上下文中。商用软件制造商JBoss在其2004年推出的JBoss 4.0中,首次引入了AOP框架和组件。

在.Net的阵营中,AOP的发展主要依靠开源社区来推动,也推出了一些优秀的AOP框架,如:Aspect#,AspectDNG,Eos AOP等。下一小节,我们重点介绍一下Aspect#的使用。

AOP是OOP的一种补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。OOP而对于公共行为进行处理却不是很擅长,例如对于日志、安全验证和异常处理功能。我们可以把这些公共的行为称为横切(cross-cutting)代码。AOP就是关注这些横切代码的,把它们统一封装为一个可重用的组件,称为“方面(Aspect)”,AOP代表的是一个横向的关系。简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP横切的思想可以通过图8-7反映出来(图片来源网络)。

 
图8-7

实现AOP,主要通过两类方式:

1.采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;

2.采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间输入有关“方面”的代码。

方式不同效果却相同,具有的特性也是相同的:

·连接点(join point):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现AOP时,并不需要去定义一个join point。

·切入点(point cut):本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。

·通知(advice):是point cut的执行代码,是执行“方面”的具体逻辑。

·方面(aspect):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。

·引入(introduce):为对象引入附加的方法或属性,从而达到修改对象结构的目的。有的AOP工具又将其称为mixin。

AOP适用于如下功能:

·安全验证(Authentication )

·缓存(Caching )

·上下文传递(Context passing )

·错误处理(Error handling )

·后期加载(Lazy loading) 

·调试(Debugging)

·记录、跟踪、优化和监测(logging, tracing, profiling and monitoring) 

·性能优化(Performance optimization) 

·持久化(Persistence)

·资源池(Resource pooling) 

·同步(Synchronization) 

·事务(Transactions)


回书目   上一节   下一节
关于 .NET  web  编程  AOP
专题
企业Web安全威胁在线评估系统
ASP.NET 2.0基础开发指南
.NET移动与嵌入式技术专题
.NET Framework新手入门专题
VS.NET实用开发专题
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。