从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代码一样
就可以把一个对象序列华成Json格式。
另外就是对于Ajax的支持。Ajax 很大的特征就是异步调用。展开的话,就是不同的浏览器有不同的异步调用组件。调用的时候需要知道调用那个url,对方返回的是个什么内容,是javascript?还是一个对象(json格式)还是xml?Callback 是什么?为此几乎所有的ajax 框架都会封装这个特性。帮你做到浏览器兼容,编程透明。以下是Dojo的一个调用。
客户端调用服务端的一个方法,服务端返回一个Json格式的对象。而对于.net ,也有一些第三方的库,负责把你序列华对象到json格式。比如 http://www.newtonsoft.com/products/json/
你在客户端只要写一下,简单的一个方法调用。就可以完成绝大多数的操作。
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来。。。