2008年4月2日星期三

Web2.0_002:AJAX是个啥东东?(摘录+整理)

【AJAX】:Asynchronous JavaScript + XML。
AJAX不是一个新的技术,而是几种老的技术的组合。
◆ XHTML + CSS 负责表示层的展现。
◆ Document Object Model 文档对象模型,负责动态显示和交互。
◆ XML + XSLT 负责数据互换和操作。
◆ XMLHttpRequest 负责异步获取数据。
◆ JavaScript 负责结合以上所有技术。
AJAX是一种运用于浏览器中的技术,使用ALAX技术的应用程序独立于浏览器。

问题1:使用AJAX技术开发Web应用与传统技术有何不同?

可以看出,主要的差别是采用了XMLHttpRequest来向服务器异步的请求XML数据。

问题2:使用AJAX技术开发Web应用与传统技术相比,用户体验有何不同?


用传统技术开发的Web应用,用户的体验如下:点击—>等待新页面—>看到新页面—>再点击......。
而采用AJAX技术可以使用异步数据进行转换,并且可以向服务器索取少量信息而非整个网页,所以用户无须等待返回结果就可以进行下一步操作,并且由于不是重新下载整个页面,响应速度也好很多。


问题3:请给一个简单的例子
<SCRIPT LANGUAGE="JavaScript">
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
xmlHttp.open("GET", "http://www.blogjava.net/zbw25/Rss.aspx", true);
xmlHttp.onreadystatechange=function() {
if (xmlHttp.readyState==4) {
alert(xmlHttp.responseText);
}
}
xmlHttp.send();
</SCRIPT>


代码说明:



  1. xmlHttp 是一个指向浏览器内置的XMLHttpRequest对象的实例。

  2. XMLHttpRequest的open方法。
    第1个参数,表示以GET的方式向服务器提交我们的HTTP请求,当然也可以选择POST的方式。HTTP请求共有7 种, 另外五种是HEAD、PUT、DELETE、OPTIONS、TRACE。
    第2个参数是一个URL,表示我们打算GET的内容所谓的网络地址。
    第3个参数就神奇了,true就代表着,我们打算提交的是一个异步的XMLHTTP请求。因为是异步提交请求,所以当浏览器执行到这一行的时候,其实并没有干什么事。要等到执行到调用XMLHttpRequest的send()方法的时候,才会真正的发出XMLHTTP请求。

  3. XMLHttpRequest对象的readyState 状态说明。
    0 未初始化 对象已创建,尚未调用open()。
    1 已初始化 调用open()方法以后。
    2 发送数据 调用send()方法以后。
    3 数据传送中 已经接收到部分数据,但尚未接收完成。
    4 完成 数据全部接收完成。

  4. XMLHttpRequest对象的status 状态说明
    200 代表服务器端返回的是正确的结果。

  5. 事件以及处理事件的函数句柄。
    每当readyState的值发生改变时,就产生了一个事件。我们可以选择在事件产生以后,如何处理。这个处理的函数,我们必须告诉这个XMLHttpRequest对象。将这个函数的句柄,在JavaScript中也就是这个函数的名称,赋值给XMLHttpRequest对象中的onreadystatechange就可以了。(注:这里其实是创建了一个匿名的函数,JavaScript支持匿名函数。onreadystatechange只是属性名称,而不是函数名称。函数在JavaScript中是第一等的对象,可以赋值给任何变量。)

  6. XMLHttpRequest在正确读取了数据之后,有四种方法可以得到这个数据。
    1. responseText 将响应信息作为字符串返回。
    2. responseXML 将响应信息格式化为XMLDOM对象并返回。
    3. responseBody 将响应信息以unsigned byte数组的形式返回。
    4. responseStream 将响应信息以IStream对象的形式返回。
    开发AJAX应用的主要工作,就是在浏览器客户端与服务器端之间,传递各种XML数据。如果要自己读取String数据,然后再全部自己手工解析XML,那就会非常复杂;而使用responseXML,就可以直接得到一个已经解析好了的XML DOM,这样就很方便了。

  7. XMLDOM相关API

问题4:当前使用AJAX技术开发的网站有哪些?
* Orkut
* Gmail
* Google Groups
* Google Suggest
* Google Maps


参考文献
1. 《AJAX新手快车道》 作者:
2. 《Ajax中文手册》作者:

2008年4月1日星期二

Web2.0_001:Web2.0是个啥东东?(摘录+整理)

“Web 2.0”已经成了一个时髦的口号:今天你Web2.0了吗?
难道Web2.0仅仅是个炒作的概念?我很不甘心地查阅了很多资料,结果相当令人沮丧,没有找到特别清楚的说法。
沮丧归沮丧,还是要给出一个答卷的。那么,什么是Web2.0?

问题:具备哪些条件才可以称为“Web2.0”?

1. 出售服务,而不是打包的软件。
Google从不出售或者打包其程序,而是提供强大的搜索服务。
客户们直接或间接地为其所使用的搜索服务付费。
原有软件工业缺陷荡然无存:
(1)没有定期的软件发布;(2)无须考虑各个版本的兼容性;
(3)没有了许可证或销售,只需要使用;
(4)没有了为了让用户在其设备上运行软件而不得不进行的平台迁移。
唯一需要做的,只是不断的改善服务品质:
(1)建立并维护庞大的、可伸缩的计算机网络;
(2)不断优化搜索应用程序。
从Google的成功,我们还可以得出一个结论:服务的价值是同它所协助管理的数据的规模和活性成正比的。
Google数据规模不用说了,而数据的活性就是由千千万万个网站提供的。

2. 用户既是内容的分享者,也是内容的创造者。
(1)Blog:个人博客。
Blog是网络时代的个人“读者文摘”,发挥一个人的聪明才智。
(2)RSS:Rich Site Summary 站点摘要。
RSS是站点用来和其他站点之间共享内容的一种技术。通常用于新闻和其他按顺序排列的网站,例如Blog,你可以订阅你工作中所需的技术文章;也可以订阅与你有共同爱好的作者的日志,总之,Blog上你对什么感兴趣你就可以订什么。
(3)WIKI:百科全书。
WIKI是一种多人协作的写作工具。发挥每个人的聪明才智,运用集体智慧对共同的主题进行探讨。
这是对信任的一种极端的实验,将埃里克•雷蒙德(Eric Raymond)的格言运用到了内容的创建之中(源自开放源码软件的背景之下):“with enough eyeballs, all bugs are shallow.”(有足够的眼球,所有的程序缺陷都是肤浅的。)
(4)SNS:Social Network Services,社会性网络服务。
SNS依据六度理论,以认识朋友的朋友为基础,扩展自己的人脉。
(5)P2P:Peer to Peer,对等联网。
强调两个对等体之间的交流,在文件交换、分布式计算等方面大有前途。
(6)IM:Instant Messenger,即时通讯。
即时通讯软件可以说是目前我国上网用户使用率最高的软件。被认为是现代交流方式的象征,并构建起一种新的社会关系。

3. 长尾效应。
什么是长尾理论?
长尾理论是:由于成本效率的因素,过去人们只关心重要的人和事,因为这些更重要,更热门。没有人愿意花费同样的精力去关注那些不重要的人和事。见下图,横轴是品种,纵轴是销量。典型的情况是只有少数产品销量较高,其余多数产品销量很低。
这就是传统的28定律:关注其中红色部分,认为20%的品种带来了80%的销量,所以应该只保留这部分,其余的都应舍弃。长尾理论则关注蓝色的长尾巴,认为这部分积少成多,可以积累成足够大、甚至超过红色部分的市场份额。从图上可以看出,实现长尾理论的条件:即蓝色部分要无限长。

只要存储和流通的渠道足够大,商品生产成本和销售成本足够低,以至于个人都可以进行生产,那些“冷门”的产品所占据的市场份额就可以和那些热卖品所占据的市场份额相匹敌甚至更大
这就是亚马逊网站的经营模式。一家大型书店通常可摆放10万本书,但亚马逊网络书店的图书销售额中,有四分之一来自排名10万以后的书籍。这些“冷门”书籍的销售比例正以高速成长,预估未来可占整个书市的一半。
Google Adsense也是利用长尾来获取利益的一个很好的例子,普通的媒体和广告商对于小型网站或个人广告可谓是不屑一顾,但Google通过为其提供个性化定制的广告服务,将这些数量众多的群体汇集起来,形成了非常可观的经济利润。
毋庸置疑,网络时代是各项成本可以压缩到最低的时代,是发挥“长尾”效益的时代。

4. 丰富而良好的用户体验(使用AJAX技术)。
这是一个严重强调个性的年代,如果不是太过强调的话。