1. 為什么要 AJAX(RIA)?
???????? 這個理由太多了,我僅從系統結構模型分析下,以 2000 年為分水嶺吧, 2K 年后火起的是 B/s 結構,相比較與 c/s 結構的優劣,列表如下:B/S | C/S | ||
缺點 | 優點 | 優點 | 缺點 |
客戶端要安裝 | ? 用戶界面人性化 | 免安裝、免維護 | ? 界面觀感差(點一下刷一下) |
不便統一升級 | 升級擴展方便 | ||
安全性差 ( 程序在客戶機上 ) | 便于進行統一權限管理 | ||
代碼相對藕合性強;開發效率低 | MVC 的模式簡潔 ; 便于分工開發 | ||
. . . | ? . . . |
??? AJAX 技術的興起,我認為從用戶的角度看,就是要在瀏覽器上跑出本機應用的效果, 即 AJAX 兼備了傳統 B/S 和 C/S 的優點 。
?
2.ajax 框架分類
開發者在使用 ajax 技術時,大多的痛處是:漂亮的界面怎么搞定;大多數的專業 java 工程師開發的界面都是恐怖的; 是在引入了 ajax 技術后,頁面表示己不像 mvc 中那樣清晰;與美工良好的配合需要程序員對 css , html , javaScript 技術更深入的掌握 --- 而不僅僅是看懂為止,因此,更多時間,我們會在應用中使用像 dwr , ZK 這樣成熟的 ajax 框架。 以俺之見, ajax 框架可以分為如下四類型:
?
第一種是基與傳輸的解決方案 ,如前面所說到的 dwr ,當然還有大名鼎鼎的 json ;這種解決方案通過其框架的轉換,使得頁面的 js 可以透明調用服務器端語言方法并自動轉換其間交換的數據類型;但在頁面的表現手段較差,如果你要展示一個漂亮互動的 tree 或 grid ,這樣樣的框架并沒有提供支持。
?
第二種可以理解為 java 語言到 js 的翻譯器 :即服務器端以編寫事件調用機制通訊的 java 代碼,通過其框架導出成前臺的 js 腳本調用;對于開發者而言,只需要編寫后端 java 代碼即可;這種類型框架的噱頭就是:“不寫一行 js 代碼也能應用 ajax 技術!”。典型的代碼如 GWT 、 ZK 等。 ????
?
第三種則是以獨立與服務器端語言的 js 腳本庫形式發布 ,如 yui 、 ext 、 jQuery 等;這種基本上是一個獨立的 js 類庫,帶有眾多的工具函組、 tree 、 form 、 grid 等現成的組件,且有統一的設計風格;所以它的優勢就是頁面組件非常完善;當然,學習起來需要對 js 語法相當熟悉。 以 js 腳本庫為應用形式的,在開發時學習成本較高;
?
?????? 這里我推薦 TIBCO General Interface ( www.tibco.com/devnet/gi/ ) , TIBCO是 通過開源 BSD 授權發布的 Ajax RIA 庫。 在這個 RIA 庫中包含了 100 多個 Ajax 組件,并且還提供相應的可視化開發工具( TIBCO Business Studio )。 這個工具是我見到開發 AJAX 應用最牛 X 的 IDE 了 --- 就像開發 SWING 界面一樣拖放!下圖為 tibco gi 的界面: ? ? ? ? ?
?
?????? ? 對于大型的AJAX項目開發,建議使用TIBCO的IDE快速開發應用界面,后臺的javaObject到前臺來就通過dwr(dwr3己有內置的gi調用接口) ,我現在手頭的一個項目就是hibernate+dwr+TiBCO,黃金搭檔!呵呵。 ?
????
? 第四種則是全棧式設計的 RIA 開發 ,可選的技術(平臺)有 javaFX 、 Flex 、及 Silverlight 等。這種方式可以實現功能最為強大的 RIA 開發 ---- 可以理解為它將傳統的本機應用開搬到了 web 上。但其對網絡帶寬要求較高,且需要客戶端瀏覽器插件支持。我本人比較看好 Flex 。 ( http://www.riachina.com/ 上有相關較多的討論 )。
??? 與前面三種有本質區別的是,前面三種都是基于http協議的,本質上是用XHR將http的請求/響應模式包裝為異步,不存在面向連結的通信!也就不可能出現真正的"服務器推"技術;但在Flex中,是可以在客戶端自己創建到服務器的Socket的,其它二種,我還不清楚,呵呵。
3.我對 AJAX 應用開發的感受:
??????? 目前 Ajax 的框架、工具可謂是成群結隊的涌現出來;在具體開發時,經常會面臨選擇的難題;做一個合適的選擇,要考慮到項目的應用方向,如是互聯網門戶還是企業內部?項目的安全性是否特別重要?選擇某種框架(工具)時也必須考慮到團隊的學習成本。總而言之 --- 不要陷在這些工具的泥潭中,今天試這個,明天玩哪個。 ??
?????? 有一點是不變的:目前的 AJAX 應本,其根本是基于 javaScript 和 css 編程,這兩種東東對與 AJAX 應用而言,其重要性就相當與 JDK 核心 API 在開發 javaEE 應用時的重要性一樣 ---- 這是本質、這才是核心!但這兩者卻經常是 java 程序員所不擅長的;對于應用市場而言,應該出現專業的 ajax 工程師,因為 ajax 畢竟是獨立與服務器的一種技術。
?
? 4.AJAX 對 web 開發模式帶來的改變:
1.客戶觀感重與技術方式,不要做技術的學究!
?????? AJAX本身是一種新瓶子裝老酒的技術;在軟件開發者大淡OOP、MVC、ORM等等技術名詞時,可能是乎略了一個簡單但是本質的問題:軟件就是要客戶用得方便!一直被oop程序員輕視的的javaScript和css現在擔擋了這一重任,并提醒我們:不要跟我講技術學究名詞!我要的是好用,用的方便!---這才是客戶要的,這也是AJAX技術能如此訊猛發展的原動力。
?
2.多頁面的MVC模型轉向桌面式的單頁面:
??? 在經典的MVC模開發模型下,典型的過程是點擊頁面上的一個組件,請求后臺Action(業務動作),返回刷新頁面。而在ajax模型下,瀏覽器里裝載的可能一直是一個頁面,頁面上組件事件的觸發將直接調用后臺對應的業務動作更新另外一個組件---似乎又回歸到了過時的c/s結構模型。這里看不到控制器;MVC中視圖的粒度從頁面縮小到html組件;通過請求/響應模型的Action調用在這里變成了基與事件機制的響應,就像是將deskTop放到了瀏覽器中一樣。?
?
3.ajax中間層增加了web開發的分工:
?????? 傳統的web開發,頁面一般只交給web設計師(主要負責頁面布局和美工)完成;程序員會躲在后臺,寫一些誰也看不到的代碼控制頁面上動態數據的展示;AJAX在這中間增加了新的一層,這也是很多程序員從嚴謹的OOP高級語言編程轉向靈活多變的腳本語言(javaScript)甚止是文本化的標記語言所感到不適的地方;另外,我們常規的思路是從不要求程序員做出漂亮的web界面---他們也做不出!但這一層的新出現,帶來了新的分工,即專業的AJAX程序員。??
???? 專業的AJAX程序員不但要對html、css、javaScript有非常熟練的掌握;重要的是要求具備人性化界面設計的思考能力,考慮到一個簡單的autoSuggest就引出web開發如此大的變革,你就知道這點有多么重要!因為你直接面對的是客戶的眼睛,你不是躲在服務器后面的程序員!因此有理由認為你做的是最重要的事。?
?
4.web安全性要求的加強:
??? 這是無可避免的,相對于呆板的MVC,ajax的靈活意味著安全的削弱;大量的ajax層js腳本會暴露在客戶端,如果這其中可能包含了你的安全驗證和一些需要保密的業務邏輯,這會被攻擊者輕而易舉的搞掂,看看我們前面dwr的例子就知。?? 除了這要求后臺開發者和ajax程序員更加緊密的合作和細心之外;最好是在后立設立獨立的安全機制控制,驗證所有的敏感數據操作。
?
-------------------------------------------------------------------------碼了這么多,就是想聽下大伙的看法
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
