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

          AJAX and AJAH and MVC

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

          Feedback

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

          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ù)  更多評論   

          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)用這一類界面元素有較多固定模式的場合。例如大多數(shù)的MIS應(yīng)用的界面上都是由Grid、Form、Tree之類的元素構(gòu)成的。況且數(shù)據(jù)和展現(xiàn)的分離后,更加有利于在前臺編寫一些數(shù)據(jù)校驗和運(yùn)算這樣的邏輯。
          當(dāng)然對于類似開發(fā)像論壇這樣的應(yīng)用,如果一味追求數(shù)據(jù)和展現(xiàn)的分離也是不太合適的。這時用AJAH實現(xiàn)頁面的局部渲染應(yīng)該是一種更好的選擇。
          所以我覺得開發(fā)具有RIA特征的WEB應(yīng)用以AJAX為主、以AJAH為輔是一種比較好的方式。
          主站蜘蛛池模板: 琼海市| 永修县| 青冈县| 江永县| 开江县| 正定县| 卫辉市| 汾阳市| 渝中区| 定南县| 偃师市| 马山县| 阳东县| 弋阳县| 洛宁县| 肥东县| 汝城县| 浦江县| 历史| 北流市| 和龙市| 晋中市| 伊宁市| 漳州市| 松江区| 岚皋县| 钟祥市| 新昌县| 宁强县| 磐安县| 双桥区| 论坛| 东山县| 彭山县| 白水县| 乡宁县| 浦江县| 黄浦区| 京山县| 余江县| 抚顺市|