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

          AJAX and AJAH and MVC

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

          Feedback

          # re: AJAX and AJAH and MVC  回復  更多評論   

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

          沒排版感覺看的暈

          # re: AJAX and AJAH and MVC  回復  更多評論   

          2006-08-30 13:30 by Benny Bao
          感覺AJAX比較適合MIS類的應用,而AJAH比較適合開發以內容發布為主的系統。
          AJAX由于提倡數據和展現的分離,因此很適合MIS應用這一類界面元素有較多固定模式的場合。例如大多數的MIS應用的界面上都是由Grid、Form、Tree之類的元素構成的。況且數據和展現的分離后,更加有利于在前臺編寫一些數據校驗和運算這樣的邏輯。
          當然對于類似開發像論壇這樣的應用,如果一味追求數據和展現的分離也是不太合適的。這時用AJAH實現頁面的局部渲染應該是一種更好的選擇。
          所以我覺得開發具有RIA特征的WEB應用以AJAX為主、以AJAH為輔是一種比較好的方式。
          主站蜘蛛池模板: 建昌县| 虞城县| 岑巩县| 澜沧| 建德市| 中卫市| 泾源县| 民乐县| 永仁县| 芦山县| 莆田市| 五河县| 连云港市| 湘西| 大足县| 鹰潭市| 榕江县| 上栗县| 乌恰县| 永春县| 江北区| 新建县| 施甸县| 沽源县| 盘锦市| 华容县| 来凤县| 于田县| 唐海县| 平遥县| 凤城市| 宝应县| 扶余县| 上犹县| 含山县| 怀柔区| 扶风县| 苍南县| 文化| 扶沟县| 四子王旗|