Posted on 2009-07-31 13:26
sailor 阅读(148)
评论(0) 编辑 收藏
ADF(Application Development Framework)是Oracle公司为简化Java EE程序开发的复杂性专门开发的一种解决方案,ADF通过减少实现设计模式和应用程序框架的代码量,简化了Java EE的开发。ORACLE为ADF提供的最新IDE是Jdeveloper 11g,它应该是目前对ADF框架支持最好的工具——从设计到最终部署整个过程都提供了非常好的支持。
1 Oracle ADF的架构
Oracle ADF的架构是基于MVC设计模式的,其架构如图所示。
下图说明了ADF各个模块在一个完整的Web Application中的结构关系。
1.1 ADF Business Components
在以数据库为中心的业务逻辑中,ADF提供了下面三种关键部件: Entity Object, ViewObject, Application module。这三层建立的顺序是这样的,先建立持久层的实体对象(Entity Object),然后建立数据访问层的视图对象(ViewObject),最后建立接口层(Application module)。其中建立持久层的实体对象主要是和数据库的表或者同义词对象建立关联,数据访问层的视图对象(ViewObject)是基于实体层的实体对象建立的(当然也可以只建视图对象,不过这样就不是基于实体对象的,而是基于SQL),主要是进行数据库的访问,而接口层是整个Business Service 层和Model层的接口,在数据访问层建立的视图对象需要注册到接口层中,这样在Model层中才可以访问。
1.2 ADF Model层
ADF model是ADF框架最核心的模块——它实现了JSR-227规范,包括两部分:Data Control和declarative bindings(声明式绑定)。
Data Control 通过使用标准元数据描述业务层中操作和数据集合(包括属性信息,方法调用等),从而抽象了业务逻辑的实现。当开发人员创建好接口层(Application module)时,Data Control也就自动创建好了,它包含了接口层中所有的功能。也就是说所有访问业务对象的方法现在都通过Data Control来进行,这样使得绑定层使用一种方式来访问数据,不论后台的数据对象是如何获取得(数据库,webservice, javabean, csv等)。可以把Data Control看做是一种代理机制,从而隔离了业务逻辑层和UI层。
Declarative bindings (声明式绑定)则是抽象了从DataControl中获取数据和调用的细节。其中包括三种基本的声明式绑定对象类型:Iterator bindings,Value bindings,Action bindings。
由于 ADF model是ADF框架最核心的模块,也是最复杂的地方。而由于DataControl都是自动建好的,通常开发人员不需要去关心它。所以在这一层最主要的就是理解Declarative bindings, 在开发过程中通常得在backing Bean中来访问这些绑定对象来实现一些特定的功能,在下一篇中会列出一些在backing Bean中常用的访问绑定对象的代码。
1.3 ADF Controller
Controller层是用来控制页面流程的。ADF Controller在实现了JSF标准的基础上进行了扩展,提供了更大的页面流功能。
1.4 ADF Faces Rich Client
ADF Faces Rich Client (RC)是基于JSF标准,内建有AJAX功能的组件。据说ADF Faces RC提供了超过100个富客户端组件,其中包括了内置Flash和SVG数据可视化组件。通过使用这些组件,用户带来极大的视觉冲击。除了使用ADF Faces RC,Oracle ADF也对Apache MyFaces Trinidad视图技术提供了完全的支持。
2 一些关于学习ORACLE ADF的资料
1. ADF API和关于ADF框架的详细文档
2. jdeveloper 11g相关
3. 一些简单的ADF在线视频
4. ADF Faces RC Component最佳实践下载
5. ADF Faces Data Visualization Components Demo
相信学习使用过Oracle adf都抱怨过其复杂性。虽然ADF框架倡导的是快速开发,但这是在开发人员熟悉该框架的前提下。相比于其它MVC框架,其复杂性造成的漫长的学习周期只能让其叫好不叫座,以及技术不开放,只有授权的用户可以申请源代码,相关的学习文档也比较凌乱(最新的中文文档基本上没有),这些都是阻碍这个优秀的框架在国内流行的因素。
原文:http://liuxuan620.javaeye.com/blog/371253