|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
为什么要区分J2EE容器和J2EE应用系统? 我们知道,J2EE应用系统只有部署在J2EE容器中才能运行,那么为什么划分为J2EE容器和J2EE应用系统? 通过对J2EE容器运行机制的分析,我们可以发现:实际上J2EE容器分离了一般应用系统的一些通用功能,例如事务机制、安全机制以及对象池或线程池等性能优化机制。 这些功能机制是每个应用系统几乎都需要的,因此可以从详细应用系统中分离出来,形成一个通用的框架平台,而且,这些功能机制的设计开发有一定难度,同时运行的稳定性和迅速性都异常重要,必须经过长时间调试和运行经验积累而成,因此,形成了专门的J2EE容器服务器产品,如Tomcat JBoss、Websphere、WebLogic等。 从J2EE系统划分为J2EE容器和J2EE应用系统两个方面,我们已经看到一种分散关注的思路(separation of concerns)。 分散关注 将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。 AOP就是这种实现分散关注的编程方式,它将“关注”封装在“方面”中。 AOP是什么? AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。 举例:假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类,专门用于在同一时刻访问这同一个数据对象。 为了完成上述并发访问同一资源的功能,需要引入锁Lock的概念,也就是说,某个时刻,当有一个访问类访问这个数据对象时,这个数据对象必须上锁Locked,用完后就立刻解锁unLocked,再供其它访问类访问。 使用传统的编程习惯,我们会创建一个抽象类,所有的访问类继续这个抽象父类,如下:
abstract void locked(); } 缺点: accessDataObject()方式需要有“锁”状态之类的相关代码。Java只提供了单继续,因此详细访问类只能继续这个父类,假如详细访问类还要继续其它父类,比如另外一个如Worker的父类,将无法方便实现。重用被打折扣,详细访问类因为也包含“锁”状态之类的相关代码,只能被重用在相关有“锁”的场合,重用范围很窄。 仔细研究这个应用的“锁”,它其实有下列特性: “锁”功能不是详细访问类的首要或主要功能,访问类主要功能是访问数据对象,例如读取数据或更改动作。 “锁”行为其实是和详细访问类的主要功能可以独立、区分开来的。 “锁”功能其实是这个系统的一个纵向切面,涉及许多类、许多类的方式。 因此,一个新的程序结构应该是关注系统的纵向切面,例如这个应用的“锁”功能,这个新的程序结构就是aspect(方面)在这个应用中,“锁”方面(aspect)应该有以下职责: 提供一些必备的功能,对被访问对象实现加锁或解锁功能。以保证所有在修改数据对象的操作之前能够调用lock()加锁,在它使用完成后,调用unlock()解锁。 AOP应用范围 很明显,AOP异常适合开发J2EE容器服务器,目前JBoss 4.0正是使用AOP框架进行开发。详细功能如下: Authentication 权限 当然,上述应用范例在没有使用AOP情况下,也得到了解决,例如JBoss 3.XXX也提供了上述应用功能,但是没有使用AOP。 但是,使用AOP可以让我们从一个更高的抽象概念来理解软件系统,AOP也许提供一种有价值的工具。可以这么说:因为使用AOP结构,现在JBoss 4.0的源码要比JBoss 3.X轻易理解多了,这对于一个大型复杂系统来说是异常重要的。 从另外一个方面说,似乎不是所有的人都需要关心AOP,它可能是一种架构设计的选择,假如选择J2EE系统,AOP关注的上述通用方面都已经被J2EE容器实现了,J2EE应用系统开发者可能需要更多地关注行业应用方面aspect。 AOP详细实现 AOP是一个概念,并没有设定详细语言的实现,它能克服那些只有单继续特性语言的缺点(如Java),目前AOP详细实现有以下几个项目: AspectJ (TM): 创建于Xerox PARC. 有近十年历史,技术成熟。 JBoss 4.0 JBoss 4.0服务器 基于字节码的项目有: aspectwerkz 返回类别: 教程 上一教程: 教您配置Web应用环境实现JSP留言簿开发 下一教程: Java Servlet 和 JSP教程(4) 您可以阅读与"什么是AOP系列之一:AOP概念解析"相关的教程: · JAVA/JSP学习系列之一(JDK安装)- · JAVA/JSP学习系列之一(JDK安装) · 什么是Extreme Programming(极限编程,简称XP) · JAVA/JSP学习系列之三(RESIN+APACHE的安装) · JAVA/JSP学习系列之五(JDBC-ODBC翻页例子) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |