<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Kimi's NutShell

    我荒廢的今日,正是昨日殞身之人祈求的明日

    BlogJava 新隨筆 管理
      141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks

    ADF是(Application Development Framework)的簡稱,它的前身是BC4J。 光聽這個名字就知道它是一個end-to-end的框架。和Spring一樣它在企業(yè)應(yīng)用架構(gòu)的每一個層次都提供了它的支持。ADF的架構(gòu)如下圖所示:

    在每一層ADF都有它的一些組件。我這次主要想講講ADF的data binding,因?yàn)樗綦x了業(yè)務(wù)邏輯層和web層,使得兩個層次的獨(dú)立性更強(qiáng)。但是,ADF似乎做得過于復(fù)雜,使得很難上手使用。
    ADF中關(guān)鍵的數(shù)據(jù)綁定概念如下:

    Data Control:
    Data Control是對業(yè)務(wù)接口的抽象,也就是說所有訪問業(yè)務(wù)對象的方法現(xiàn)在都通過Data Control來進(jìn)行,這樣使得綁定層使用一種方式來訪問數(shù)據(jù),不論后臺的數(shù)據(jù)對象是種實(shí)現(xiàn)??梢园袲ata Control看做是一種代理機(jī)制。

    Iterator Bindings and Control Bindings:
    Binding是一種輕量級的對象,它的主要目的就是讓后臺數(shù)據(jù)和前臺顯示解藕,這是老生常談的問題,讓我們看看ADF是怎么做的。Iterator Binding 和提供集合對象數(shù)據(jù)的Data Control合作。 Control Bindings 則提供了一個標(biāo)準(zhǔn)的接口讓用戶界面可處理集合對象或者調(diào)用業(yè)務(wù)方法。

    Binding Containers:
    Binding Container 對象記錄了某一個用戶界面使用了哪些iterator binding、control binding。 有一個XML文件記錄了這些內(nèi)容,在運(yùn)行時就會根據(jù)這個XML來生產(chǎn)一個Binding Container。

    Binding Context:
    Binding Context 則是比Binding Container更大的一個概念,它包含了所有的Binding Container以及Data Control的信息。
    下面介紹一個簡單的應(yīng)用藍(lán)圖:

    這個應(yīng)用是這樣的, 現(xiàn)在有一個論壇,在這個論壇上有一個頁面用來Review 一些Threads并指定一個team回復(fù)它,這個頁面叫做ReviewThreads.jsp 。 這個頁面需要從后臺的ForumService來獲得數(shù)據(jù)并指定回復(fù)的Team. ForumService是一個ADF的Application Module組件(Application module組件是對業(yè)務(wù)邏輯的一種抽象,它可以實(shí)現(xiàn)為java class,EJB,webservice等等,它也有自己的方法來調(diào)用View Object,這里大家只需要認(rèn)為它是一種業(yè)務(wù)組件就行了)。另外,這個頁面還需要一個所有可選Team的下拉框,這個下來框的數(shù)據(jù)來自一個web service LookupCodes。
    對應(yīng)每一個業(yè)務(wù)組件會有一個Data Control包裝了該組件的業(yè)務(wù)方法。在該應(yīng)用的Binding Context中包含了兩個Binding Container, ReviewThreads和UnansweredPostings。前者提供給ReviewThreads.jsp使用,后者則同事支持uix頁面(uix是一種基于XML的界面語言),以及Jclient的一個Swing Panel。
    ReviewThreads綁定容器包含了以下Binding:
    1. 三個指向該應(yīng)用使用的數(shù)據(jù)集合的iterator binding。兩個由ForumService提供,一個由LookupCodes提供,如圖所示
    2. 三個支持了界面上元素的Control Binding
    首先是一個Attribute control binding 用來在頁面上Name輸入框中顯示Forum名字
    其次是一個list binding來支持下拉框
    最后是一個range binding用來支持JSTL的
    顯示Team對象。
    3. 一個control binding用來調(diào)用ForumService的一個方法,用來指定Team答復(fù)Thread.

    需要注意的是,control value bindings 是需要通過iterator binding來獲得他們的數(shù)據(jù)。特別是list value binding它同時需要使用兩個iterator binding,一個用來取得所有的list中的值,另一個用來提供list中選擇的值。

    下圖介紹了上述的組件在運(yùn)行時是怎么樣配合的。一個Binding Context包含了一個或者多個Data Control和Binding Container。每一個Binding Container會有一個或者多個iterator binding 指定了一個頁面使用的數(shù)據(jù)集合。每一個iterator binding從一個特定的Data control獲取及更改數(shù)據(jù)。Binding Container也會有一個或多個control binding 來支持頁面控制。當(dāng)Control binding需要和數(shù)據(jù)綁定時,就要一個iterator binding相關(guān)聯(lián)。如果是一個control action binding,比如說和頁面上的submit健關(guān)聯(lián)的binding則會要和一個data control 關(guān)聯(lián)用來調(diào)用service 層的方法。


    posted on 2006-06-22 09:35 Kimi 閱讀(232) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 18国产精品白浆在线观看免费| 中文在线观看永久免费| 亚欧色视频在线观看免费| 亚洲αv久久久噜噜噜噜噜| 三级毛片在线免费观看| 精品国产亚洲一区二区三区| 在线观看免费无码视频| 精品亚洲一区二区| 国产成人久久AV免费| 亚洲成av人在线视| 免费女人高潮流视频在线观看| 97亚洲熟妇自偷自拍另类图片 | 亚洲日产韩国一二三四区| 一级毛片aa高清免费观看| 亚洲热线99精品视频| 黄色视屏在线免费播放| 亚洲成人中文字幕| 噼里啪啦免费观看高清动漫4| 亚洲色大成网站www永久男同| 亚洲人成网7777777国产| 中文无码日韩欧免费视频| 亚洲国产精品不卡在线电影| 91精品国产免费久久久久久青草| 色婷五月综激情亚洲综合| 日韩成人免费视频| 亚洲欧洲日韩在线电影| 日韩免费a级在线观看| 一区二区在线免费视频| 亚洲av日韩av无码黑人| 最近中文字幕mv免费高清视频7| 337P日本欧洲亚洲大胆精品| 在线观看亚洲精品国产| 足恋玩丝袜脚视频免费网站| 亚洲丁香婷婷综合久久| 亚洲国产精品无码中文字| 免费一本色道久久一区| 成av免费大片黄在线观看| 亚洲ts人妖网站| 亚洲中文字幕无码中文字在线| 日韩在线免费视频| 国产成人无码精品久久久久免费|