posts - 176, comments - 240, trackbacks - 0, articles - 7

          AJAX and AJAH and MVC

          Posted on 2006-05-09 22:56 canonical 閱讀(1635) 評(píng)論(2)  編輯  收藏 所屬分類: 軟件開發(fā)
          ? 傳統(tǒng)的Mode2模式的服務(wù)器端框架在處理AJAX應(yīng)用的時(shí)候存在一定的不適應(yīng)性,這主要的原因在于Model2基于推模式,它隱含的假設(shè)是基于action的處理結(jié)果生成整個(gè)頁面,而AJAX應(yīng)用中所強(qiáng)調(diào)的是頁面局部的變化,只更新發(fā)生變化的部分,而不是重新生成整個(gè)頁面(change instead of create), 這兩者之間存在著內(nèi)在的不協(xié)調(diào)。有些人推崇后臺(tái)服務(wù)程序只返回xml數(shù)據(jù)的方法,將顯示層完全推到前臺(tái)。雖然在前臺(tái)通過js腳本操縱DOM節(jié)點(diǎn)可以實(shí)現(xiàn)非常細(xì)粒度上的控制,但是我們并不總是需要最細(xì)粒度上的控制權(quán)的。例如現(xiàn)在我們?cè)谇芭_(tái)實(shí)現(xiàn)一個(gè)grid控件, grid控件本身只需要控制到單元格層次即可,而不需要對(duì)于單元格里存放什么內(nèi)容有預(yù)先的假設(shè). grid.getCell(i,j).innerHTML = cellHtml是非常自然的一種解決方式。完全通過dom來構(gòu)造界面面臨著眾多問題,除了瀏覽器bug這種揮之不去的噩夢(mèng)之外,在實(shí)現(xiàn)過程中我們往往會(huì)引入對(duì)界面元素的大量限制條件,而無法做到集成各種來源的控件。
          ? 在服務(wù)器端生成頁面片斷的方式也稱為AJAH,表面上看起來它比AJAX要簡(jiǎn)易一些,是很多服務(wù)器端框架引入AJAX概念的鄉(xiāng)間小徑。但有趣的是在基于拉模式(pull mode)的服務(wù)器端MVC框架中,AJAH是在架構(gòu)上比AJAX更加靈活的一種方式。在witrix平臺(tái)的jsplet框架中,web訪問的基本形式如下:
          ?? /view.jsp?objectName=XXObject&objectEvent=XXEvent&otherArgs&tplPart=XXPart
          其中objectName對(duì)應(yīng)于后臺(tái)的服務(wù)對(duì)象,objectEvent參數(shù)映射到服務(wù)對(duì)象的方法,view.jsp是對(duì)于后臺(tái)對(duì)象進(jìn)行渲染的模板頁面,而tplPart參數(shù)可以指定只使用模板的某一部分進(jìn)行渲染。如果我們選擇json.jsp或者burlap.jsp作為渲染模板,則可以退化到返回?cái)?shù)據(jù)而不是內(nèi)容的方式。在js中進(jìn)行簡(jiǎn)單的封裝后我們可以通過如下方式進(jìn)行遠(yuǎn)程調(diào)用:
          ? new js.Ajax().setObjectName("XXObject").setObjectEvent("XXEvent").addForm("XXFormId").callRemote(callbackFunc);
          ?? 它對(duì)應(yīng)的url請(qǐng)求為
          ?? /json.jsp?objectName=XXObject&objectEvent=XXEvent&...
          對(duì)于同樣的后臺(tái)業(yè)務(wù)處理,我們可以自由的選擇渲染模板,則可以很自然的得到更多的處理方式,例如返回javascript代碼來實(shí)現(xiàn)對(duì)于前臺(tái)的回調(diào)。

          Feedback

          # re: AJAX and AJAH and MVC  回復(fù)  更多評(píng)論   

          2006-05-10 23:36 by 原創(chuàng)專欄 開源學(xué)習(xí)
          我覺得關(guān)鍵是你的系統(tǒng)有多少功能或界面需要用ajax技術(shù)。如果少的話,可能你提供的思路可以。但如果是以ajax為核心的程序,考慮用些成熟的ajax 框架,避免自己再開發(fā)一套框架。

          沒排版感覺看的暈

          # re: AJAX and AJAH and MVC  回復(fù)  更多評(píng)論   

          2006-08-30 13:30 by Benny Bao
          感覺AJAX比較適合MIS類的應(yīng)用,而AJAH比較適合開發(fā)以內(nèi)容發(fā)布為主的系統(tǒng)。
          AJAX由于提倡數(shù)據(jù)和展現(xiàn)的分離,因此很適合MIS應(yīng)用這一類界面元素有較多固定模式的場(chǎng)合。例如大多數(shù)的MIS應(yīng)用的界面上都是由Grid、Form、Tree之類的元素構(gòu)成的。況且數(shù)據(jù)和展現(xiàn)的分離后,更加有利于在前臺(tái)編寫一些數(shù)據(jù)校驗(yàn)和運(yùn)算這樣的邏輯。
          當(dāng)然對(duì)于類似開發(fā)像論壇這樣的應(yīng)用,如果一味追求數(shù)據(jù)和展現(xiàn)的分離也是不太合適的。這時(shí)用AJAH實(shí)現(xiàn)頁面的局部渲染應(yīng)該是一種更好的選擇。
          所以我覺得開發(fā)具有RIA特征的WEB應(yīng)用以AJAX為主、以AJAH為輔是一種比較好的方式。
          主站蜘蛛池模板: 瓦房店市| 天门市| 曲靖市| 开封县| 顺平县| 马龙县| 神农架林区| 建瓯市| 东乡族自治县| 佛山市| 临安市| 宣武区| 饶阳县| 通榆县| 张家口市| 五大连池市| 额尔古纳市| 安仁县| 连州市| 靖宇县| 奇台县| 岑巩县| 栖霞市| 金平| 广汉市| 玉环县| 肇州县| 靖远县| 阳江市| 深泽县| 兴宁市| 行唐县| 大余县| 德令哈市| 阳江市| 织金县| 策勒县| 乡宁县| 双鸭山市| 广饶县| 齐河县|