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

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

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

    kingpub

    海內(nèi)存知己,博客若比鄰

     

    基于Ajax的Web系統(tǒng)開發(fā)的思考

    基于Ajax進行Web系統(tǒng)的開發(fā)無疑是現(xiàn)在最大的熱點,但畢竟web系統(tǒng)開發(fā)這個前提是一樣的,所以在基于ajax開發(fā)的時候同樣是request/response模式,只是這個過程是異步的,那來看看基于ajax開發(fā)和傳統(tǒng)web開發(fā)有什么不同的地方,首先可以看一個典型的ajax的交互場景:
    基于ajax的典型開發(fā)場景.jpg
    1、web頁面的響應(yīng)交由對應(yīng)的js事件進行處理,通常來說這個js需要對web頁面的請求進行分析,提取必要的參數(shù),組成調(diào)用service facade所需的格式。
    2、js通過dwr、buffalo這些web remoting框架調(diào)用后臺的service。
    3、Service Facade根據(jù)請求進行分發(fā)至相應(yīng)的service進行處理。
    4、在service處理完畢后將結(jié)果返回至js,這時會有兩種做法,一種是將html在service facade部分進行組裝,將此html返回給js,由js直接負責顯示;另一種做法是返回數(shù)據(jù)給js,由js負責將數(shù)據(jù)進行渲染顯示。

    在上面的這個交互過程中,對比MVCFramework(webwork、struts)這些會發(fā)現(xiàn)基于ajax的交互過程中的一些不足點:
    1、web頁面對提交至的js要明確。
    2、js需要對請求的參數(shù)進行解析形成service facade所需的參數(shù)。
    3、html在service facade部分進行組裝是否合適?另外一個解決方法則導致需要在js中負責html元素的創(chuàng)建。

    先將這三個不足點放在一邊,這個時候我們來看看基于傳統(tǒng)的MVCFramework的一個典型的交互場景:
    基于MVCFramework的典型開發(fā)場景.jpg
    1、Web頁面的響應(yīng)交由統(tǒng)一的servlet進行處理。
    2、Servlet將請求的參數(shù)進行處理,調(diào)用相應(yīng)的ActionFramework由其進行具體的事件處理。
    3、ActionFramework調(diào)用相應(yīng)的action進行處理。
    4、Action處理完畢后返回result至actionFramework,這時ActionFramework調(diào)用相應(yīng)的resultResolver,結(jié)合相應(yīng)的顯示頁面將顯示的html放入response中。
    這是一個比較典型的基于MVCFramework的交互過程,在這個過程中我們得到的幾點好處是:
    1、MVCFramework會根據(jù)配置將請求分發(fā)至對應(yīng)的action。
    2、MVCFramework會根據(jù)action所需的參數(shù)從request中提取并注入進去,不需要自己從request中去解析。
    3、MVCFramework會根據(jù)action的執(zhí)行結(jié)果結(jié)合相應(yīng)的頁面進行解析生成html。

    現(xiàn)在我們再來看基于ajax開發(fā)的三個不足點,發(fā)現(xiàn)目前的MVCFramework對其無疑是個解決方案,只是如何將現(xiàn)在的MVCFramework的思想與基于ajax的開發(fā)進行結(jié)合,這里我們首先看基于MVCFramework交互過程和基于ajax交互過程,會發(fā)現(xiàn)這個過程是如此的類似,js可以看成是servlet的替代,相當于給個簡單的理解就是基于servlet的是一種同步的request/response,而基于js的是一種異步的request/response,這個時候其實基于ajax的開發(fā)也就同樣的轉(zhuǎn)入了傳統(tǒng)的基于MVCFramework的一個開發(fā)形式,這里面疑問的問題是在服務(wù)器端生成html的問題,我倒覺得這個不是問題,象利用velocity等仍然可保證view的純潔性,返回html至js由js負責重寫的方式我覺得比返回數(shù)據(jù)由js渲染的方式來得好,畢竟在模板文件上寫是一件多么容易的事,和UI可以很簡單的結(jié)合,在經(jīng)過這樣的分析后提出一個這樣的基于ajax的交互過程:
    基于ajax的改進開發(fā)場景.jpg
    目前的ajax的os的東西好像還不能達到這樣的場景吧,那么其實我們需要做的是對webwork稍做改變,讓其只是接受request,然后的流程和目前webwork中的完全相同,將request封裝為xwork需要的,由xwork負責將其相應(yīng)的注入到對應(yīng)的action,action處理完畢后返回結(jié)果,由ResultResovler解析為html返回,此時前端的js則將此html進行顯示即可完成整個的交互過程,^_^,maybe下個版本的struts TI會很好的支持這種方式。
    在這樣的一種情況下,我們會發(fā)現(xiàn)基于ajax的開發(fā)對現(xiàn)有的MVCFramework其實不會造成太大的影響,相當于只是加了一種異步的處理模式,可以想像很快MVCFramework都能夠支持同步/異步的處理模式,而且對于開發(fā)人員來說是透明的。

    posted on 2006-08-15 09:53 xiaofeng 閱讀(108) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     

    導航

    統(tǒng)計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 18禁美女黄网站色大片免费观看| 久99久无码精品视频免费播放| 182tv免费观看在线视频| 成人亚洲性情网站WWW在线观看| 色九月亚洲综合网| 亚洲色中文字幕无码AV| 亚洲自偷精品视频自拍| 99在线观看精品免费99| 亚洲天堂电影在线观看| 午夜不卡AV免费| aⅴ在线免费观看| 亚洲国产免费综合| 女人被弄到高潮的免费视频| 国产亚洲sss在线播放| 永久免费视频v片www| 国产亚洲色婷婷久久99精品| 久草视频在线免费看| 亚洲精品人成电影网| 久久久久久av无码免费看大片| 亚洲精品亚洲人成在线观看下载| a级毛片免费观看在线| 亚洲AV人无码激艳猛片| 黄页网站免费在线观看| 亚洲AV性色在线观看| 中文字幕亚洲无线码| 99免费在线观看视频| 亚洲六月丁香六月婷婷蜜芽| 国产免费黄色无码视频| 亚洲人成在线观看| 91免费资源网站入口| 亚洲精品视频在线| 成人毛片手机版免费看| 亚洲大香伊人蕉在人依线| 国产精品国产午夜免费福利看| 男女男精品网站免费观看| 亚洲日本一区二区三区| 狠狠久久永久免费观看| 精品一区二区三区免费| 亚洲AV男人的天堂在线观看| 国产亚洲AV夜间福利香蕉149| 无遮免费网站在线入口|