前言:
本文的源自于Martin Fowler的著作《Patterns of EnterPRise application Architecture》中關于Web表示模式的一些啟發。作者做了多年Web開發,并不限于企業級Web應用。在娛樂方面的應用(如聊天室,即時消息,Web場景聊天等)得到的一些工作經驗促使我在企業級應用上進行了深層次的探索和思考,并形成了這篇文章。目前國內外并沒有明顯在這方面的文章或著作,希望此文能夠給做WEB開發的同仁一點借鑒之處。
本文的最先在2004年11月13日的javaparty聚會上以PPT提出,后經過整理完成。
1 觀點提出
標準的遵循HTTP GET/POST的WEB開發方式往往遵循這樣一個流程:客戶端發送一個請求:GET或者POST給WEB服務器,WEB服務器處理完成后將結果以Response返回給客戶端。在得到服務器的響應之前,客戶端一直在等待,頁面停滯,用戶將看見瀏覽器長長的的等待條慢慢增長。
而Google Gmail給了我們完全不同的體驗。你無法感受到頁面的跳轉,系統反應非???。獲取新郵件不需要手動或者自動的刷新瀏覽器。這一切給人的感覺是那么友好,以至于它一經推出便得到了眾多用戶的寵愛,并同時成為Sina,Yahoo等郵件提供商的追趕對象。
這便是我要提出的面向異步消息的WEB應用(Asynchronous-Messaging Oriented Web Application, 簡稱AMOWA)的一個小例子。一個具備AMOWA特征的WEB應用具備以下三條:
1. 系統必須是一個WEB應用。事實上,在非WEB環境中設計與實現異步調用非常簡單,考慮也很自然。但在WEB環境下,設計與實現相對比較麻煩,思維方式也稍微會有些跳躍感。
2. 系統中必須具備消息特征,無論是隱式或者顯式。在網絡游戲,即時消息工具等應用中,消息特征比較明顯,這方面的論述也比較多;但有些企業應用,也能夠發現一些隱含的消息模式。比如,一個商業智能WEB客戶端,需要進行鉆取、上溯、切片等操作,這些操作和返回值可以被包裝為消息(事實上,目前已經有相關的規范,分別是MDX和xml/A);在操作型WEB應用中,操作同樣可以被抽象為消息,比如一個Bug治理系統,提交Bug, 查看Bug等,都可以包裝為消息。
3. 消息必須是異步的。這一點是與傳統方式的根本不同之處。傳統的方式在完成某個操作一定存在頁面切換,而AMOWA不必。消息是異步傳輸,在操作完成之前客戶可以看到一個友好的Loading或者其他友好的提示,等到操作完成數據可用之后,前臺的UI采用javascript/Flash的方式進行刷新。
2 AMOWA的出生歷程
AMOWA的提出來自于網頁出現的這十多年。
最初始階段傳統的聊天室。前臺網頁往往需要經過幾秒鐘自動刷新一次來獲取其他在線用戶的發言。后來出現了無刷新聊天室,或多或少采用了隱藏幀來處理消息的定時收發。在這期間出現了Pushlet, 一種意圖將HTTP消息"推"到客戶端而不是客戶端主動"拉"的方式。這種方式在客戶端看來,就像是一個有一個永遠也下載不完的頁面;服務器端往往不答應buffer, 并通過response.write然后直接response.flush的方式向客戶端寫數據。
之后的一段時間WEB應用一直停留在標準的Request/Response的方式很久,直到xmlhttp的出現,面向異步消息的應用才多了起來,同時由于思維方式的擴展,很多采用同樣思維的應用也出現了,這些應用跨越了很多行業,包括商用和娛樂行業,直到現在,面向異步消息的WEB應用已經能夠成功勝任大多數的WEB應用,并以改善用戶體驗為最終目標,越來越受到重視。
3 應用場景
商用領域,包括但不限于
l 郵件應用程序。這一點,在Gmail上已經得到驗證。郵件應用是最典型的異步、消息的應用,在WEB環境下,異步消息模式完全有理由應用在郵件系統客戶端中。假如有一種方式能夠讓你不刷新就能夠獲取新郵件,讓你不需切換頁面就能夠閱讀/編寫郵件,你還會想回到老路上嗎?
2 即時消息應用。典型的無外乎MSN Web Messenger. 即時消息并不要求實時性。在即時消息系統中,延遲2~3秒用戶是完全符合用戶期待。而這寶貴的2~3秒給了即時消息的WEB應用提供了生存空間,并給了即時消息服務提供商新的賣點。
3 商業智能客戶端。商業智能產品越來越趨向于WEB--或許這是整個世界應用的發展趨勢;WEB上對數據立方的鉆取、旋轉、切片假如需要切換頁面,沒有多少人會很愉快的接受這樣的系統。這樣需要頻繁操作的系統,AMOWA是當仁不二的選擇。
4 WEB地圖系統。www.go2map.com 上的地圖,大家可以看到異步操作模式下的地圖是多么自然;相反,ICQ提供的地圖服務讓人難以接受:每次點擊或者圈選地圖之后,就要等待一段時間的白屏。
5 其它操作性強的系統。比如,財務信息治理系統,前面提到的Bug治理系統,具備明顯或者能夠抽象成命令特征的系統。注重,國內政府或者大型國企需要的OA等項目不太適合應用AMOWA,原因是大多數情況下,消息格式的定義比起需求的控制、界面的變更以及項目完成后的使用率,顯得微不足道且毫無意義。
娛樂與游戲領域,包括但不限于:
l 聊天室。沒有什么比一邊聊天一邊聽著瀏覽器自動刷新時發出的"叭噠"聲更討厭了。更加細心的定義AMOWA的消息結構,你會發現聊天室的訪問者更多了。
2 WEB在線游戲。不要以為不可能,請訪問www.51js.com, 那里有令很多傳統WEB開發者意想不到的東西。目前已經實現的有:LiveChatV2, 一個純Javascript+Html的場景聊天室;中國象棋,純JavaScript+HTML的網絡版中國象棋。目前臺灣有一款真正的WEB網絡即時戰略游戲,正在線運營,月卡好幾十臺幣。
|
新聞熱點
疑難解答