最近Ajax比較火,好像是Web應用的救世主一樣,也是Web方面好久沒有什麼能夠炒作的東西了,現在終於找到一個發泄激情的東東了。雖然我個人不認為這個東西有什麼了不起,我總覺得JavaScript之類的東西,起一個粘合劑的東西還可以,指望靠它來挑大樑還是不行的。在Windows平台上我還是比較看好.NET,那個東西本身就有一個可以動態編譯啟動並執行運行時,效能比JavaScript的強的不可道裡計,而且IDE又無比的強悍(以後有時間可以寫一點在.NET下如何在運行時下載代碼、編譯並且執行的技術,估計在SliverLight的最終實現中應該會推.NET而捨棄JavaScript),Ajax總是一個過渡的東西。而且玩Ajax玩的不是技術而是技巧,沒有什麼意思。
雖然我認為Ajax是一個過渡的東西,但是現在嗎眼球經濟,還是需要學習學習,乘著亂子混幾個錢花花。對於Web資料的傳遞或者說對象的持久解決方案,微軟的方案是提供了一個名為JavaScriptSerializer的鳥東西,通過ASP.NET頁面、Htpp Handler或者ASHX頁面實現的Http Handler來將一個對象序列化成為一個Josn字串或者將一個Josn字元傳序列化為一個對象。雖然比較靈活,但是我還是覺得實現的不太透明,對於程式員來來說需要乾的事情太多了。
我想如果能夠在Web用戶端提供一個JavaScript實現的Session類,這個類提供對象的持久化操作,在伺服器端也提供一個Handler來負責響應Session類的請求,並且使用反射或者其它的技術(例如資料驅動等)來將Session的請求調度到對象持久層,這樣就完全解決了需要為Web用戶端提供很多的Handler來處理一堆鬆散請求的問題,使代碼更加的嚴謹。
用戶端虛擬碼:
Net.Session = function{};
//查詢對象
var projects = Net.Session.Query("Project","Some Condition");
//刪除對象
projects.Delete();
Net.Session.Submit( projects );
//更新對象
project[0].Name = "使用AJAX實現ORM的構想";
Net.Session.Submit( projects );
//新增對象,在用戶端保留了對象的原型,如果沒有記錄則到伺服器端請求一個新對象
var newProject = Net.Session.New("Project");
newProject.Name = "使用AJAX實現ORM的構想";
Net.Session.Submit( newProject );
//伺服器端
var object = Parser.Parse( request );
Net.Session.Submit( object );
這隻是一個設想,如果有什麼不對的地方請大家多多指教,如果後續的工作不忙了抽空把具體的實現代碼寫出來。