<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
    主站蜘蛛池模板: 亚洲色婷婷一区二区三区| 国产一级一片免费播放i| 亚洲成在人线av| 国产精品永久免费| 国产av无码专区亚洲av果冻传媒| 一区二区三区免费视频网站| 亚洲高清偷拍一区二区三区| 女人裸身j部免费视频无遮挡| 亚洲男人天堂2020| 成人免费777777被爆出| 亚洲精品无码高潮喷水在线| 黄色网址在线免费| 亚洲国产日韩在线| 免费无码黄网站在线观看| 美女隐私免费视频看| 亚洲最大AV网站在线观看| 无码人妻久久一区二区三区免费 | 亚洲午夜成人精品无码色欲| 成人免费无码大片A毛片抽搐色欲| 亚洲AV无码成人精品区狼人影院| 又爽又黄无遮挡高清免费视频| 亚洲一级片免费看| 久久精品国产亚洲AV香蕉| ww在线观视频免费观看| 精品国产亚洲AV麻豆| 亚洲小说区图片区另类春色| a拍拍男女免费看全片| 含羞草国产亚洲精品岁国产精品| 亚洲中文字幕无码一久久区| 麻豆最新国产剧情AV原创免费| 国产亚洲福利一区二区免费看| 亚洲成av人影院| 好爽…又高潮了毛片免费看| CAOPORM国产精品视频免费| 亚洲精品综合久久中文字幕| 亚洲国产成人五月综合网 | 成年免费大片黄在线观看岛国| 国产亚洲精品欧洲在线观看| 亚洲AV成人精品网站在线播放| 免费人成视频在线| 国产一级片免费看|