從04年,Web 2.0正式被提出來之後。圍繞業務模式,模型。web 2.0應用雨後春筍。比前幾年吵的很熱的SOA還要火爆。我google了一下,web 2.0的結果是SOA 的20倍。在技術領域,哪怕開發工具,好似不支援web 2.0就很落伍了一樣。我最近聽了一個delphi的講座,delphi 2007很快推出,他居然也說要支援web2.0. 那麼對web 2。0的支援,從技術角度講有那些層次呢。
1. 對Javascript/Ajax/DOM的封裝和實現
web 2.0 的技術其實分為三個部分,指令碼語言, 瀏覽器展現的模型,非同步呼叫。對於指令碼語言,一般是, Sys.Serialization.Javajavascript,javascript本省沒有什麼安全類型,OO特性,命名空間。而一些第三方的庫都會幫你去封裝,去幫你做一些javascrip的OO使用。比如幫你擴充String的方法,實現一些常用的工具類。
microsoft atlas client library (http://ajax.asp.net/docs/ClientReference/default.aspx)就有這部分的特性
比如你可以寫OOScriptSerializer serialize代碼一樣
Sys.Serialization.JavaScriptSerializer.serialize(yourobject)
就可以把一個對象序列華成Json格式。
另外就是對於Ajax的支援。Ajax 很大的特徵就是非同步呼叫。展開的話,就是不同的瀏覽器有不同的非同步呼叫組件。調用的時候需要知道調用那個url,對方返回的是個什麼內容,是javascript?還是一個對象(json格式)還是xml?Callback 是什嗎?為此幾乎所有的ajax 架構都會封裝這個特性。幫你做到瀏覽器安全色,編程透明。以下是Dojo的一個調用。
用戶端調用服務端的一個方法,服務端返回一個Json格式的對象。而對於.net ,也有一些第三方的庫,負責把你序列華對象到json格式。比如 http://www.newtonsoft.com/products/json/
你在用戶端只要寫一下,簡單的一個方法調用。就可以完成絕大多數的操作。
var bindArgs = {
url: "http://youserver/yourapp.aspx",
mimetype: "text/json",
sync:true,
error: function(type, errObj){
alert("error");
},
load: function(type, data, evt){
// handle successful response here
dojo.byId("result").innerHTML=data.FullName;
}
};
dojo.io.bind(bindArgs);
僅僅有javascript的特性支援加非同步呼叫還不夠,能否跟Dom結合作出一些現成的可用的組件或者控制項呢?比如能否給我一個自動完成的combox類似google sugesst一樣?能否給我一個treeview非同步從後台抓資料?可否有一個拖放額效果?
很多庫也是支援這方面的需求。比如YahooUI(YUI),Dojo,MochiKit等。這三個庫都是用戶端的庫,也就是說完全基於javascript+瀏覽器模型
2.對既有編程體系的擴充使之支援Ajax.
兩個典型的例子就是微軟的Atlas server-side. 您只需拖放一個UpdatePanel控制項,稍許配置一下就可以實現部分重新整理。而Atalas幫你做自動的render成JS代碼,js代碼負責展現,後台非同步呼叫以及操作dom。而且還支援可視化的調試。
當然 Delphi 2007對 web20的支援也是這個範疇。有一些VCL for web的組件,讓你可以用delphi的文法操作對象,對象自動有非同步事件。而產生的程式碼都是透明的。當然是非常混亂的。所以特別大的網站很少這樣用。原因1:產生的js數量太大,影響載入速度。 2。太多不可控。因為這些特性,是很容易自己開發實現。
3. web 2.0的實現技術。出了傳統的Ajax之外呢,你也可以用machomedia的Flex,實現強的展示,使用者體驗。還有一些快速開發的技術,比如用Ruby on Rails,我今天看了一個video,他可以15分鐘作出一個blog來。。。