?
?
關于
MVC
:
?
1、?
Ajax
必然會帶來
Web
開發
Model2
模型的變革。
a)????????
MVC
的角色由服務器端向客戶端靠攏,或者,干脆轉為其他更合適的形式,
b)???????
V(View)
的角色將不再僅僅是不起眼的
jsp
,在
Web2.0
的時代,它將擁有自己獨立的一套體系結構。即行為
(Java Script/ECMAScript)
,結構
(XHTML)
和樣式
(CSS)
。
c)???????
M
的角色將更像
DTO
,它的形式可以由多種,比如:
???????????????????????? i.?????????????
字符串
?????????????????????? ii.?????????????
JS
對象
????????????????????? iii.?????????????
應用更為廣泛的
XML
對應的,他們的傳輸協議也有多種(當然,都是基于
HTTP
):
???????????????????????? i.?????????????
JSON-RPC
(
JS
對象)
?????????????????????? ii.?????????????
Burlap(
基于
XML
的
Java
對象
)
同時,客戶端
-
服務器端對象之間的轉化也將成為一個必須解決的問題。目前,
JSON
,
Buffalo
已經比較好的做到了這一點。
d)???????
C
的角色將更為靠近客戶端,它將利用
Js
的特點,發揮其快速、靈活的特點。它將取代大部分原服務器端控制器的作用。從而使服務器端的編程更加專注與業務邏輯。
服務器端的控制器層則會變得更薄,它將專注于:
????????????????????? iii.?????????????
服務器端數據驗證與安全保護
???????????????????? iv.?????????????
與業務邏輯層之間聯結的紐帶
但是,這一層的功能一旦集成到業務邏輯層,它將失去主要的作用,很可能退出服務器端的領域。
?
?
2、?
傳統的
MVC
框架
(
比如
Struts
,
WebWork)
與
Ajax
之間應該是競爭的關系,因為:
a)????????
傳統的
MVC
框架在本質上,都是同步調用,而非
Ajax
提倡的異步調用。
b)???????
傳統的
MVC
框架試圖用標簽來集成一部分
Ajax
應用。但這注定只能是一種過渡行為,因為:
???????????????????????? i.?????????????
傳統的
Tag
帶來的不便正逐漸顯現出來。
(
學習成本、不利于編輯、客戶端與服務器端代碼的夾雜等
)
?????????????????????? ii.?????????????
Tag
對
Js
的封裝有限,無法發揮
Js
強大靈活的功能
????????????????????? iii.?????????????
Tag
是服務器端生成的代碼,過多的參與客戶端的行為,不利于程序的分層實現。
???????????????????? iv.?????????????
使用
Tag
使得頁面展現邏輯的控制變得復雜和難于理解。它將使動作與表現的分離變得困難。也使得客戶端與服務器端邏輯的分離變得不可能。試想用一段代碼來控制一個自己也不知道會不會生成,能生成什么樣
HTML
的
Tag
?
c)???????
基于第一部分提出的原因,
Ajax
所提倡的新的
MVC
方式與傳統的
MVC
框架所實現的方式已經有本質的區別,它們之間的競爭也就不可避免了。
3、?
傳統的
MVC
框架適用的地方(
Web Request
適用):
a)????????
重視
URL
的應用,如新聞、論壇等
b)???????
重視搜索引擎優化
c)???????
重視用戶傳統習慣(后退鍵問題等)
實際上,上邊所說的問題
Ajax
都可具有相應的解決方案,但是由于并不能顯示出更多的優勢。所以傳統的
MVC
應用框架仍然有存在的空間。
?
另外,強烈推薦的兩個
PPT
莊表偉:
http://www.ajaxcn.org/space/start/2006-03-13/1/Ajax%E6%8A%80%E6%9C%AF%E5%9C%B0%E5%9B%BE.pps
曹曉剛:
http://www.redsaga.com/down/Use-RIA-And-Metadata-In-J2EE-Enterprise-Dev.ppt
?
這個也不錯,不過沒完全看懂:
http://alex.dojotoolkit.org/wp-content/LowLatencyData.pdf
?
?
關于用戶體驗:
?
1、?
更佳的用戶體驗是
Ajax
應用推廣的原動力
a)????????
2006
年的
Web
開發將是注重用戶體驗的一年
b)???????
基于異步的
Web Remote
調用將給用戶帶來更好的用戶體驗
2、?
交互式設計
a)????????
傳統的設計令人惱怒,也不能提高生產率
b)???????
基于目標導向的交互式設計
c)???????
http://www.dedream.com
?
關于
Web
標準和
Web2.0
?
1、?
Ajax
需要建立在
Web
標準之上,因此,學習
Ajax
必須學習
Web
標準。
2、?
使用
Web
標準能給
Web
應用帶來更多的好處
.
。
a)????????
具體的可以參見《網站重構》一書。
http://www.china-pub.com/computers/common/info.asp?id=18781
3、?
使用
Ajax
可以實現
Web2.0
的一堆概念
?
關于
RIA
(胖客戶端):
1、?
Ajax
是否屬于
RIA
方案?
這種爭論意義不大,但是
Ajax
確實帶來了與其他
RIA
方案相似的用戶體驗。在
RIA
重新引起人們重視的今天。
2、?
比較其他的
RIA
方案,
(Flash\Flex
,
Java Web Start
,
Applet
,
Eclipse Remote
,
ActiveX)
,
Ajax
更容易被
Web
開發人員所接受
3、?
使用
XML
做
Web Remote
數據傳輸體,可以使
Ajax
應用方便的遷徙到其他
RIA
方案。
?
其他:
?
挑戰與思考:
1、?
Ajax
推動的困難之一在于開發人員對
Js
、
CSS
等表現層技術的輕視。
a)????????
業界需要
Web
標準、
Web 2.0
等相關技術,加強對此的研究工作
b)???????
需要開發人員重視用戶交互、用戶體驗方面的研究
2、?
相對不成熟的
Ajax
開源框架,目前
Ajax
開發尚沒有類似
Struts
、
WebWork
等經過多年考驗成熟框架,多數
Ajax
框架還不存在
2.0
以上的發布版。而且
Ajax
開源框架質量的良莠不齊也給開發人員的選擇帶來困難。
a)????????
部分精品的
Ajax
框架(
DWR
、
Buffalo
、
JSON
等)已經將逐步走向成熟,雖然尚缺乏大型應用的考驗,但也有了長足的進步。
b)???????
國內優秀的
Ajax
框架
Buffalo
正逐步得到多方面的應用。
3、?
Ajax
的安全問題與解決方案,
a)????????
Ajax
使用的
XMLHttp
技術不能跨域訪問
url,
也不能在
HTTP
協議的頁面訪問
HTTPS
的請求。
???????????????????????? i.?????????????
對于安全性不高的應用,可以使用服務器端中間頁面(服務器段代理)解決此問題。
?????????????????????? ii.?????????????
對于確實需要加密的應用,可以使用嵌入
HTTPS
協議的
IFrame
頁面來訪問
HTTPS
請求。
b)???????
DoS
攻擊。
Ajax
使用的
XMLHttp
使用類似
POST
的方式提交數據。使得客戶端可以無限制的提交大量攻擊性數據。一旦攻擊者采用分布式拒絕服務攻擊
(DDoS)
,將對系統帶來很大影響。
???????????????????????? i.?????????????
除加強服務器段驗證外,目前軟件方面無太好的解決辦法。實際上,使用
POST
方式的表單提交同樣存在此問題,但是
Ajax
的應用使得服務器端的服務地址變得更易被發現。
?????????????????????? ii.?????????????
使用硬件防火墻。
c)???????
傳輸數據減少,使得數據被截獲后分析變得容易。
???????????????????????? i.?????????????
使用數據加密技術
?????????????????????? ii.?????????????
使用安全套接字層傳輸數據
d)???????
客戶端代碼展現在用戶面前,難以保證商業項目源代碼的版權。
???????????????????????? i.?????????????
對
JavaScript
腳本進行加密(
Google
)。
?
4、?
其他問題:
a)????????
緩存問題,
XMLHttp
的緩存使得服務器端數據更新后,客戶端不一定能立即展現出來
???????????????????????? i.?????????????
使用隨機碼訪問服務器端地址
?????????????????????? ii.?????????????
通過對
XMLHttp
緩存性質的設置,犧牲部分性能來解決此問題
b)???????
瀏覽器兼容性問題:
???????????????????????? i.?????????????
目前流行的
Ajax
框架均可支持大部分的瀏覽器
?????????????????????? ii.?????????????
對于比較古老的瀏覽器(不支持
XMLHttp
)尚沒有解決的辦法,但是使用這部分瀏覽器的訪問者數量已經接近于
0
。