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

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

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

    也論基于元數(shù)據(jù)和RIA進行企業(yè)應(yīng)用開發(fā)

    看了 caoxg 在廣州 Bea User Group 上講的《利用元數(shù)據(jù)和 RIA 簡化企業(yè)應(yīng)用程序的開發(fā)》的 PPT ,很有感觸,說說自己對于其中幾點的做法:

    1 、構(gòu)件化界面開發(fā)

    ?? 對于構(gòu)件化界面開發(fā),必然是發(fā)展的趨勢,但覺得就目前的技術(shù)形式來看,我還是很同意 Tapestry JSF 這些在服務(wù)器端進行界面建構(gòu)的方式,這也是自己在現(xiàn)在的實際項目中采用的方式,盡管我也認為 XUL 會是一個良好的發(fā)展,畢竟界面確實不應(yīng)該在服務(wù)器端組裝,個人覺得這里面最重要的一個原因在于現(xiàn)在從 UI Design html 的生成比較簡單,而對于其他方式只能是由程序員自己去完成集成了,在 N 多實際項目中都體現(xiàn)出這個往往是項目最為耗時的部分,自己現(xiàn)在在這塊上還是傾向在服務(wù)器端通過 velocity 之類的模板機制來把 html 生成的方式,這樣既能發(fā)揮 ui design html 生成的優(yōu)勢,同時也避免界面集成過度復雜的方式。

    ??? 另外,現(xiàn)在也在努力做采用附加的 xml 去直接描述 ui design 生成的 html ,理論上來講,這種方式就可以減少 UI 集成這塊的工作,其實就是依據(jù)目前的 UI Design 的工具來看,還是認為最好是保持 html 的純潔性,這樣 UI 集成的問題一定程度上是可以得到解決的,通過附加的 xml 去描述 html 中的動態(tài)元素。

    ??? zk 這樣的東西覺得現(xiàn)在不夠成熟或者說至少自己不會采用的原因就在于它仍然是要進行 UI 集成的,而這步仍然是要耗費很大的精力。

    ??? Qooxdoo 不熟悉,無法評價,不過既然是 javascript DHtml 的控件封裝的話,一定程度上倒是可以考慮考慮,在使用后再進行這部分的評價。

    2 、是否需要在客戶端了解 property 的屬性

    ?? 這點我覺得是肯定的,就像 PPT 上所說的一樣, Validation Query 這些是需要的,目前在實際中碰到的最重要的是在維護的時候需要,維護的時候通常都需要知道這個 POJO property 的屬性的。

    3 、是否需要在客戶端了解 POJO 之間的關(guān)聯(lián)關(guān)系

    ?? 這點上覺得同樣是肯定的,頁面上有很多聯(lián)動性質(zhì)的元素,這點在我目前的設(shè)計中我稱為是 link 方式的交互,這個要么是用戶自行定義要么是通過 POJO 之間的關(guān)聯(lián)關(guān)系自動形成。

    ?? 另外在維護的時候這點同樣是至關(guān)重要的,至少在我目前設(shè)計的系統(tǒng)中維護的時候是非常需要知道 POJO property 是否帶有關(guān)聯(lián)性質(zhì)的。

    4 Data Bind

    ?? 這點無疑 ms 提供了不錯的示范,同時象現(xiàn)在 bstek 提供的東西,也是不錯的,很好的給予了數(shù)據(jù)綁定到客戶端控件的示例。

    ?? 目前自己的做法和通常的做法也都差不多,控件上直接綁定查詢語句或是 xml 數(shù)據(jù)文件的方式。

    ?? Bind 后客戶端重新渲染的這個問題,我現(xiàn)在的做法就是我上面說的,在服務(wù)器端結(jié)合 Velocity 模板來完成這步的工作,之后把 html 返回給前端 js ,由其負責放至相應(yīng)的容器 (span div ) 中進行顯示。

    ?? 關(guān)聯(lián)類型的綁定上現(xiàn)在我采用的是通過 js 綁定行為至控件上的方式 ..

    ?? Metadata 確實是 Data Bind 的最重要來源,因為通常來說 Data Bind 做的目的還有很多其他的東西,象 Data 的維護、分頁、查詢等等,在我現(xiàn)在做的項目中分為了四個部分,分別是綁定的數(shù)據(jù)集元數(shù)據(jù)、顯示的元數(shù)據(jù) ( 包括 css html ) 、字段的元數(shù)據(jù) ( 字段名、字段排序等 ) 、操作的元數(shù)據(jù) ( 如分頁、新增等 ) ,通過綁定的數(shù)據(jù)集元數(shù)據(jù)結(jié)合 Hibernate Metadata 形成數(shù)據(jù)方面的元數(shù)據(jù)信息,同時獲取到其中的關(guān)聯(lián)信息。

    ?

    應(yīng)該說,現(xiàn)在在 AJAX 開發(fā)這塊確實還有非常多需要改進的地方, Data Bind 這塊其實一直是 java 界的一個弱點,覺得這其實也是為什么象 bstek 等等的東西可以得到應(yīng)用場景的原因。

    Data Bind 方面我覺得主要就是兩部分,一方面當然是 Data ,另一方面就是 metadata ,對于 metadata 的定義決定了其適用性,在這里拋磚引玉,說說自己現(xiàn)在的實際做法。

    首先大概的說說我在 Data Bind 這塊的期望,我希望的是用戶可通過定義的方式來完成數(shù)據(jù)集組件的開發(fā)工作,這里所說的數(shù)據(jù)集組件大可以到一個用戶管理的模塊,小可以到一個用戶下拉列表,當然,其實這完全是可以通過定義方式的不同來決定的。

    就假設(shè)數(shù)據(jù)集組件就是為了去支持一個用戶管理模塊的定義,這個時候其實可以想像如果要支持更為簡單的用戶下拉列表,當然是毫無問題的一件事,對一個通常的用戶管理模塊進行分析,我認為數(shù)據(jù)集組件中需要至少提供:

    1、? 綁定數(shù)據(jù)集到數(shù)據(jù)集組件

    對于數(shù)據(jù)集組件而言,無疑最重要的就是其所綁定的數(shù)據(jù)集是什么,通常來說可以是一個查詢語句或者是一個 xml 數(shù)據(jù)文件等。

    2、? 設(shè)定數(shù)據(jù)集組件的顯示方式

    這點我指的其實是需要控制數(shù)據(jù)集組件以表格方式展現(xiàn)或樹的方式展現(xiàn)等等,當然,象表格方式可能又會有多種,例如單選表格、多選表格等等。

    還有就是象控制數(shù)據(jù)集組件的顯示形式方面,這點在我現(xiàn)在的設(shè)計中我采用的是保持 html 純潔性的原則,保持 web 界面的結(jié)構(gòu)、顯示和行為三部分,期望開發(fā)人員可通過僅僅通過 css 定義來改變客戶端控件的顯示方式,而不是別的方式,客戶端控件中定義好的是結(jié)構(gòu)。

    3、? 設(shè)置數(shù)據(jù)集組件的字段映射

    這點為什么需要的原因就在于通過綁定的數(shù)據(jù)集我們能獲取到的通常是數(shù)據(jù)表的 metadata po metadata ,但在具體做顯示的時候我們通常都需要采用有意義的文字來顯示字段,如用戶名對應(yīng)著 po 中的 username ,同時還需要定義象字段的顯示順序等。

    4、? 設(shè)置數(shù)據(jù)集組件的操作

    這點指的就是為了滿足當一個數(shù)據(jù)集組件復雜到作為一個功能模塊的時候,例如有新增用戶、編輯用戶等,這個時候通過此部分的配置來決定當前的數(shù)據(jù)集組件是否擁有這些功能操作,同時定義這些功能操作中需要的元數(shù)據(jù)信息,如分頁操作需要的元數(shù)據(jù)信息就會有每頁記錄數(shù)等 …..

    5、? 設(shè)置數(shù)據(jù)集組件的交互方式

    這點是根據(jù)對于模塊頁面的交互來形成,例如在新增用戶的時候通常希望可以通過下拉或彈出等方式選擇用戶所屬的部門,又例如在一種主從關(guān)系的結(jié)構(gòu)中通常需要在點擊主表的時候更新子表中的相應(yīng)內(nèi)容,感覺這樣說可能不太清楚,一個形象的例子其實還有就是在選擇了部門后,我們希望部門負責人這個下拉列表中相應(yīng)的就只顯示該部門的負責人,根據(jù)這樣的分析,我把交互方式定義為了 link dropdown 以及 popup 三種,而每種交互方式中又可以綁定一個數(shù)據(jù)集組件,也就是把三種交互方式都只是作為一種交互的容器而已,容器中仍然是放置數(shù)據(jù)集組件,在這樣的做法下,如我們要定義新增用戶的時候的所屬部門的字段可下拉選擇部門,這個時候我們可通過定義一個交互組件,這個交互組件為下拉交互組件,它綁定了一個部門列表的數(shù)據(jù)集組件,這個數(shù)據(jù)集組件綁定了一個查詢部門的語句,其顯示方式為單選表格,其操作方式為分頁操作,其需要顯示的字段為 Org.name ,相應(yīng)的顯示出來的為組織機構(gòu)名稱,在完成這些定義后我們可以將這個交互組件綁定到用戶管理數(shù)據(jù)集組件的所屬部門的字段上,通過這樣的方式后在新增、編輯用戶的時候就可看到所屬部門是可通過下拉列表進行選擇的。同樣,其他的交互方式也分別是采用類似的方式進行完成。

    目前來說主要是通過了這五種元數(shù)據(jù)來形成整個數(shù)據(jù)集組件的定義,同時有一個專門的交互組件的定義,在擁有了這些元數(shù)據(jù)后通過 js 來實現(xiàn)數(shù)據(jù)集組件的行為,而這些 js 有純粹的客戶端的操作,也有與服務(wù)器交互的部分,根據(jù)這些元數(shù)據(jù)通過相應(yīng)的客戶端控制來形成 html ,并將數(shù)據(jù)進行填充,根據(jù)這些元數(shù)據(jù)來控制頁面的顯示形式,在這點上我現(xiàn)在采用的就僅僅是 css

    應(yīng)該說上面所說的只是為了實現(xiàn)數(shù)據(jù)集組件的元數(shù)據(jù)定義,并不是說一定要基于 ajax 去實現(xiàn),也可以通過別的方式去實現(xiàn),目前我采用的是基于 dwr ,對于 web 界面就象我說的,我分為三部分:

    1、? html

    在后臺通過 velocity 模板的方式來完成顯示,這個主要是由客戶端控件結(jié)合數(shù)據(jù)以及元數(shù)據(jù)來完成。

    2、? js

    有前端的交互邏輯和與服務(wù)器的交互,當然,它也是要結(jié)合元數(shù)據(jù)的,這個在 dwr buffalo 這些提供 java object 透明轉(zhuǎn)化 javascript object 支持的框架中就很好辦了。

    在寫這塊的時候還是碰到不少的問題,目前覺得還是在事件機制上,現(xiàn)在自己也是寫了個基本的事件管理器,來實現(xiàn)基本的事件注冊、事件攔截器的注冊、事件的調(diào)用以及事件攔截器的有效范圍的控制。

    3、? css

    控制數(shù)據(jù)集組件、交互組件的顯示方式,當然,這在一定程度上提高了對于 css 的要求。

    改天截張現(xiàn)在做到的效果圖貼上來給大家看看,呵呵,其實我覺得也就是和 bstek 的東西差不多而已,只是某些方面稍有超越, ^_^

    ?

    在基于一個這樣的東西上,開發(fā)人員可通過數(shù)據(jù)集組件、交互組件的配置來完成數(shù)據(jù)集組件、交互組件的開發(fā)工作,當然,在這樣的情況下,開發(fā)客戶端控件并不是一件什么很容易的事,因為既要了解元數(shù)據(jù)模型,又要了解數(shù)據(jù)部分的模型,還要完成客戶端控件的交互的實現(xiàn) …..

    開發(fā)人員在定義好了數(shù)據(jù)集組件后則只需要在需要顯示的頁面上使用 javascript 加載這個數(shù)據(jù)集組件就 OK 了,在這樣的方式一定程度上簡化了以前的 UI 集成工作,因為只需要將 UI Design 中需要轉(zhuǎn)化為動態(tài)的部分直接切換為數(shù)據(jù)集組件就可以了,而其他的 UI 部分的設(shè)計就可以不用去管了 ..

    下一步我就是希望通過一個附加的 xml 直接去描述 UI Design 形成的 html ,這樣的話即使 UI Design html 改變了系統(tǒng)也是可以不改變的,一種可以想像的結(jié)果就是可以給用戶換一套 UI ,但后臺完全不需要做改變, ^_^

    拋磚引玉,歡迎大家發(fā)表自己的看法,來交流交流,呵呵 ….

    posted on 2006-03-18 15:31 BlueDavy 閱讀(1777) 評論(0)  編輯  收藏 所屬分類: Java

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2006年3月>
    2627281234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费国产综合视频在线看 | 国产91色综合久久免费分享| 亚洲乱码在线视频| 麻豆精品国产免费观看| 精品国产免费人成网站| 亚洲精品国产成人| 亚洲国产精品碰碰| 免费不卡视频一卡二卡| 一级特黄色毛片免费看| 亚洲国产精品白丝在线观看| 亚洲高清无码综合性爱视频| 16女性下面无遮挡免费| 九九免费精品视频在这里| 亚洲欧洲国产综合| 亚洲五月午夜免费在线视频| 全免费毛片在线播放| 黄视频在线观看免费| 亚洲AV色无码乱码在线观看| 亚洲丁香色婷婷综合欲色啪| 免费女人18毛片a级毛片视频| ww4545四虎永久免费地址| 国产免费福利体检区久久| 一本色道久久88—综合亚洲精品| 亚洲精品无码久久一线| 国产精品va无码免费麻豆| 亚洲一区二区免费视频| a毛片视频免费观看影院| 亚洲成av人片天堂网无码】| 亚洲视频在线观看免费视频| 最新精品亚洲成a人在线观看| 好男人视频在线观看免费看片| 亚洲免费视频在线观看| 一本岛v免费不卡一二三区| 亚洲愉拍一区二区三区| 亚洲精品国产情侣av在线| 亚洲AV无码码潮喷在线观看| 亚洲精品第一国产综合精品99| 日韩免费视频网站| 18禁无遮挡无码网站免费| 亚洲精品免费在线| 毛片无码免费无码播放|