1 Oracle ADF的架構(gòu)
Oracle ADF的架構(gòu)是基于MVC設(shè)計模式的,其架構(gòu)如圖所示。
下圖說明了ADF各個模塊在一個完整的Web Application中的結(jié)構(gòu)關(guān)系。
1.1 ADF Business Components
在以數(shù)據(jù)庫為中心的業(yè)務(wù)邏輯中,ADF提供了下面三種關(guān)鍵部件: Entity Object, ViewObject, Application module。這三層建立的順序是這樣的,先建立持久層的實體對象(Entity Object),然后建立數(shù)據(jù)訪問層的視圖對象(ViewObject),最后建立接口層(Application module)。其中建立持久層的實體對象主要是和數(shù)據(jù)庫的表或者同義詞對象建立關(guān)聯(lián),數(shù)據(jù)訪問層的視圖對象(ViewObject)是基于實體層的實體對象建立的(當然也可以只建視圖對象,不過這樣就不是基于實體對象的,而是基于SQL),主要是進行數(shù)據(jù)庫的訪問,而接口層是整個Business Service 層和Model層的接口,在數(shù)據(jù)訪問層建立的視圖對象需要注冊到接口層中,這樣在Model層中才可以訪問。
1.2 ADF Model層
ADF model是ADF框架最核心的模塊——它實現(xiàn)了JSR-227規(guī)范,包括兩部分:Data Control和declarative bindings(聲明式綁定)。
Data Control 通過使用標準元數(shù)據(jù)描述業(yè)務(wù)層中操作和數(shù)據(jù)集合(包括屬性信息,方法調(diào)用等),從而抽象了業(yè)務(wù)邏輯的實現(xiàn)。當開發(fā)人員創(chuàng)建好接口層(Application module)時,Data Control也就自動創(chuàng)建好了,它包含了接口層中所有的功能。也就是說所有訪問業(yè)務(wù)對象的方法現(xiàn)在都通過Data Control來進行,這樣使得綁定層使用一種方式來訪問數(shù)據(jù),不論后臺的數(shù)據(jù)對象是如何獲取得(數(shù)據(jù)庫,webservice, javabean, csv等)。可以把Data Control看做是一種代理機制,從而隔離了業(yè)務(wù)邏輯層和UI層。
Declarative bindings (聲明式綁定)則是抽象了從DataControl中獲取數(shù)據(jù)和調(diào)用的細節(jié)。其中包括三種基本的聲明式綁定對象類型:Iterator bindings,Value bindings,Action bindings。
由于 ADF model是ADF框架最核心的模塊,也是最復(fù)雜的地方。而由于DataControl都是自動建好的,通常開發(fā)人員不需要去關(guān)心它。所以在這一層最主要的就是理解Declarative bindings, 在開發(fā)過程中通常得在backing Bean中來訪問這些綁定對象來實現(xiàn)一些特定的功能,在下一篇中會列出一些在backing Bean中常用的訪問綁定對象的代碼。
1.3 ADF Controller
Controller層是用來控制頁面流程的。ADF Controller在實現(xiàn)了JSF標準的基礎(chǔ)上進行了擴展,提供了更大的頁面流功能。
1.4 ADF Faces Rich Client
ADF Faces Rich Client (RC)是基于JSF標準,內(nèi)建有AJAX功能的組件。據(jù)說ADF Faces RC提供了超過100個富客戶端組件,其中包括了內(nèi)置Flash和SVG數(shù)據(jù)可視化組件。通過使用這些組件,用戶帶來極大的視覺沖擊。除了使用ADF Faces RC,Oracle ADF也對Apache MyFaces Trinidad視圖技術(shù)提供了完全的支持。
2 一些關(guān)于學(xué)習(xí)ORACLE ADF的資料
3. 一些簡單的ADF在線視頻
4. ADF Faces RC Component最佳實踐下載
5. ADF Faces Data Visualization Components Demo
相信學(xué)習(xí)使用過Oracle adf都抱怨過其復(fù)雜性。雖然ADF框架倡導(dǎo)的是快速開發(fā),但這是在開發(fā)人員熟悉該框架的前提下。相比于其它MVC框架,其復(fù)雜性造成的漫長的學(xué)習(xí)周期只能讓其叫好不叫座,以及技術(shù)不開放,只有授權(quán)的用戶可以申請源代碼,相關(guān)的學(xué)習(xí)文檔也比較凌亂(最新的中文文檔基本上沒有),這些都是阻礙這個優(yōu)秀的框架在國內(nèi)流行的因素。
原文:http://liuxuan620.javaeye.com/blog/371253