Web2.0对我们有什么意义
Web2.0最近在业内比较火,实际上跟当年鼓吹BBS和news list改变世界的情况有些相似。作为从业人员,应该冷静客观地认识和理解Web2.0对我们的产品的意义。
业内对Web2.0的鼓吹实际上是从博客开始的,直到把博客扭曲为止。实际上,在国外,Web2.0并不会跟在中国一样,放上如此堂皇的位置来说。因为对他们来说,大部分产品和项目以业务为导向,这种改变是理所当然的,是平滑的。
所谓Web1.0和Web2.0并没有本质上的区别,很多时候甚至也难找到明显的界限。但是对于一直在Web1.0的种种默认原则和交互习惯下的我们来说,有必要重新审视一下用户的需求,因为用户需求在积累到一定程度后,是需要我们去发掘和提供解决方案的。
我认为对于我们从业者特别是公众互联网产品设计者、项目管理者、研发人员来说,一些新的模式:RSS、trackback、Tag、wiki等等,新技术:ajax(实际上是几种已有技术的组合),还有一系列新的交互方式,都值得去关注,因为这些东西能给我们的产品带来质的变化。在我们想心功能想破头皮的时候,实际上已经有这么多好的方式在等着我们去用了。
这些模式和技术在逐渐被使用的过程中,创造了一些令人耳目一下的东西,到了一定阶段,和以前的东西比较,自然有区别,所以评论者们才会搬出Web2.0的概念,来高度概括这些变化。
从用户需求的角度讲。所谓的传统方式其实代表的是互联网用户以前的主流需求:从互联网应用之初用FTP相互传送文档,到互联网膨胀时期用超链接联结互联网资源,用户成熟稳定之后,必然会想要更多的东西,那就是:主动联结和分享。人和机器的交互变成了人-机-人交互。这就是Web2.0要满足的。从技术上说,它比不上从FTP交换到browser浏览那一步的跃进的幅度,但是在互联网用户如此众多的今天,一丁点小的变化和细节也许都将产生巨大的影响。
如果能理解Web2.0的种种思想、机制、模式,并灵活运用在项目中,会对产品质量甚至是产品的本质带来极大的变化。
Web2.0
Rss/Atom
TrackBack
Ajax
Tag
Wiki
amd:自动安装NFS(网络文件系统)守侯进程
apmd:高级电源管理
Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Autofs:自动安装管理进程automount,与NFS相关,依赖于NIS
Bootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息
crond:Linux下的计划任务
Dhcpd:启动一个DHCP(动态IP地址分配)服务器
Gated:网关路由守候进程,使用动态的OSPF路由选择协议
Httpd:WEB服务器
Inetd:支持多种网络服务的核心守候程序
Innd:Usenet新闻服务器
Linuxconf:允许使用本地WEB服务器作为用户接口来配置机器
Lpd:打印服务器
Mars-nwe:mars-nwe文件和用于Novell的打印服务器
Mcserv:Midnight命令文件服务器
named:DNS服务器
netfs:安装NFS、Samba和NetWare网络文件系统
network:激活已配置网络接口的脚本程序
nfs:打开NFS服务
nscd:nscd(Name Switch Cache daemon)服务器,用于NIS的一个支持服务,它高速缓存用户口令和组成成员关系
portmap:RPC portmap管理器,与inetd类似,它管理基于RPC服务的连接
postgresql:一种SQL数据库服务器
routed:路由守候进程,使用动态RIP路由选择协议
rstatd:一个为LAN上的其它机器收集和提供系统信息的守候程序
ruserd:远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录到LAN上一个机器日志中的用户信息
rwalld:激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每个注册到LAN机器上的其他终端写消息
rwhod:激活rwhod服务进程,它支持LAN的rwho和ruptime服务
sendmail:邮件服务器sendmail
smb:Samba文件共享/打印服务
snmpd:本地简单网络管理候进程
squid:激活代理服务器squid
syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的脚本
xfs:X Window字型服务器,为本地和远程X服务器提供字型集
xntpd:网络时间服务器
ypbind:为NIS(网络信息系统)客户机激活ypbind服务进程
yppasswdd:NIS口令服务器
ypserv:NIS主服务器
gpm:管鼠标的
identd:AUTH服务,在提供用户信息方面与finger类似
Linux各项系统开机服务的功能是什么?有哪些可以关掉?
Linux在启动时要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。但是,开启不必要或有漏洞的服务则会 给操作系统带来安全和性能上的影响。下面我们以BluePoint Linux 2.0的开机服务为例,列表说明各项服务的功能。
alsasound
Alsa声卡驱动程序支持。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。
amd
运行automount精灵程序,该精灵在必要时自动安装一些 本地设备和NFS文件系统。
apmd
apmd用来监视系统用电状态,并将相关信息通过syslogd 写入日志。也可以用来在电源不足时关机。
arpwatch
该程序主要用来维护以太网物理地址和IP地址的对应关系。
atalk
AppleTalk精灵程序。注意不要在后台运行该程序,该程 序的数据结构必须在运行其他进程前先花一定时间初始化。
atd
运行用户用At命令调度的任务。也在系统负荷比较低时 运行批处理任务。
autofs
当您需要时自动转载文件系统,而当您不需要时自动卸载。
bootparamd
该服务允许老的Sun工作站从Linux网络启动,它和rarp 现在很少使用,基本上被bootp和dhcp取代了。
crond
cron是Unix下的一个传统程序,该程序周期地运行用户 调度的任务。比起传统的Unix版本,Vixie版本添加了不 少属性,而且更安全,配置更简单。
dhcpd 该精灵提供了对动态主机控制协议(Dynamic Host Control Protocol)的访问支持。
gated
gated通过一个数据库提供了网络路由功能支持。它支持 各种路由协议,包括RIP版本1和2、DCN HELLO协议、 OSPF版本2以及EGP版本2到4。
gpm
gpm为文本模式下的Linux程序如mc(Midnight Commander)提供了鼠标的支持。它也支持控制台下鼠标 的拷贝,粘贴操作以及弹出式菜单。
httpd
http是著名的www服务器,可用来提供HTML文件以 及CGI动态内容服务。
inetd
因特网操作服务程序。监控网络对各种它管理的服务的需 求,并在必要的时候启动相应的服务程序。通常,inetd 管理的程序有telnet、ftp、rsh和rlogin。 关闭inetd也就 关闭了这些由它管理的服务。
innd
inn是最流行的用户组新闻服务器。它允许您建立起本地 新闻服务器。配置有一定的难度,可以先阅读/usr/doc/ inn*文档获得帮助。
keytable 该程序的功能是转载您在/etc/sysconfig/keyboards里说 明的键盘映射表,该表可以通过kbdconfig工具进行选 择。您应该使该程序处于激活状 态。
ldap
LDAP代表Lightweight Directory Access Protocol, 实现了目录访问协议的行业标准。
linuxconf
linuxconf是Linux下的一个有效的系统配置工具,该服 务允许远程运行。
lpd
lpd是系统打印守护程序,负责将lpr等程序提交给打印 作业。
mcserv
Midnight Commander服务进程允许远程机器上的用户 通过Midnight Commander文件管理器操作本机文件。服 务进程用PAM来验证用户,需要给出“用 户名/口令” 以通过验证。
mysql 一个快速高效可靠的轻型SQL数据库引擎。
named 域名服务器,将Internet主机名解析为点分的IP地址。
netfs 负责装载/卸载NFS、Samba、NCP(Netware)文件系统。
network 激活/关闭启动时的各个网络接口。
nfs
NFS是一个流行的基于TCP/IP网络的文件共享协议。该 服务提供了NFS文件共享服务,具体的配置在/etc/ exports文件里。
nscd
该服务负责密码和组的查询,并且缓冲查询结果。如果您 的系统有比较慢的服务(如NIS和NIS+),则应该启动该 服务。
pcmcia pcmcia 主要用于支持笔记本电脑。
portmap portmap 用来支持RPC连接,RPC被用于NFS以及NIS 等服务。
postgresql PostgreSQL 关系数据库引擎。
proftpd proftpd 是Unix下的一个配置灵活的ftp守护程序。
radvd 路由广播程序。
random
保存和恢复系统的高质量随机数生成器,这些随机数是系 统一些随机行为提供的。
routed
该守护程序支持RIP协议的自动IP路由表维护。RIP主要 使用在小型网络上,大一点的网络就需要复杂一点的协议。
rstatd Rstat协议允许网络上的用户获得同一网络上各机器的性能 参数。
rusersd 该服务使网络用户可以定位同一网络上的其他用户。
rwalld
Rwall协议允许远程用户向在同一系统中活跃着的终端发送 消息,类似wall的本地行为。
rwhod
允许远程用户获得运行rwho精灵的机器上所有已登录用户 的列表,与finger类似。
sendmail 大名鼎鼎的邮件服务器。
smb 启动和关闭smbd和nmbd精灵程序以提供SMB网络服务。
snmpd 简单网络管理协议(SNMP)的守护精灵。
syslog
syslog是操作系统提供的一种机制,守护程序通常使用这 种机制将各种信息写到各个系统日志文件。通常应该启动 该服务。
xfs X的字体服务器。
ypbind NIS/YP的客户端守护程序。如果您需要使用NIS/YP机 器,请启动这项服务,否则,关闭这项服务。
yppasswd
让NIS用户能够修改密码。运行在NIS域的服务器上。客 户端程序同样也叫yppasswd。
ypserv
标准NIS/YP网络协议的一个实现。允许主机名,用户名 和其他信息分布于网络各端。运行在NIS服务器上,客户 端不需要。
以前一直不太信这个的,今天偶尔看了看,感觉真还有点像自己。希望这能给我一点帮助吧…
| 引用: | |
|
开发室解散了。这是前几天的事,我刚刚从学校毕业,刚刚正式离开开发室,开发室就解散了。
说什么好呢?在学校四年,大概有70%的时间都花在了开发室。sigh…
不知道现在的孩子们是一种什么心理,电脑太普及了?还是觉得是计算机系的,就很NB?还是真正想学习专业课程而不屑于中心的工作?年初在北京上班的时候,和老师聊起来,老师突然说:你们都走了,我以后让谁做事啊?想想,开发室那会还有十五个左右呢。
老师说:那些人要不不来,来了就看看电影啊,玩会游戏啊。没一个能使得动的。
想想当年,我们还是两个人一台机器,经常主动通宵、跷课,以给自己争取更多的玩电脑的时间。而现在的孩子们,平时上课时一定不在,不上课时也不一定来。小孩子们还不懂事,一次我在开发室接水时一个家伙居然在屋里大声的打电话,刚开始就没打算说他。哪想到居然打上二十分钟去了,全然不顾屋子里其他人。气的我直接冲他大喊了一句:打电话不能出去打啊?然而,没用。
那会我们还抢任务,因为知道没有任务就不能更好的学东西。那天开会说有任务,居然有几个小孩支支吾吾不想接。晕。
解散吧,也许这样对中心、对以后重建的开发室会有好处。那天晚上和老师喝酒的时候我就说了,一定要让几个小孩走人。老师更绝,“我要解散开发室。”
曾经的开发室成员(不全):
岳正,邹昌林,周爱明,刘北京,杨琳,TDG
丢丢,Eric,紫霞狼,孤独笑
Lowsea,Snowfish,王中山
Better,Jerry,高明,kedy
Acrow,Mudone,Alpha,王聪山,01PX
希望还有后来人…
更多…
更NB…
今天算是正式上班了,到北京,到公司,没有以前想象的那种兴奋.感觉,似乎平常的很.
那天晚上刚刚到北京的时候,在床上突然想起了班里的兄弟们.四年,就那么突然的离别了.而我,更是快的连告别都没来得及,其实,那个时候,我不敢多等.与其说是时间问题,不如说我不敢面对离别时的那种伤感.在床上,我流泪了,不知道到底怎么说,当时真的好想飞回学校,飞到我们班中间去.
都走了,除了国防生,想想,那个班,那30个人….
散伙饭吃过了,不像预期的那样激情。根据自己的性格和以往的经验,我去之前特意把手机和钱包都放到了宿舍,特意在同学那带了一包纸。虽然是啤的,但我想倒下是必然的,泪水也是一定会流下的。
然而竟全然不如我想象的那样。唱歌的时候,我试了两三次,居然连问心无愧都唱不上去了,要知道,前几天我刚刚唱过的。想想那个样子,回忆一下当时自己的心情,真的还不如前些天宿舍的一起出去吃饭的情景。
要告别了,我觉得在这个时候,是一定要有一些离别的氛围的,不是说非得让谁脸上泪花盛开,但至少,得有个离别的样子吧。
班里的散伙饭大概就是这样了吧。泪水,大概会是在兄弟们再次聚集的时候了吧。想想,北京,军区,太原,山东,广州,浙江,还有一个澳洲,再聚,会是什么时候了呢?
歌手:蔡依林 专辑:我知道你很难过
我知道你很难过
爱一个人
需要缘分
你何苦让自己
越陷越深
别傻得用你的天真去碰触不安的灵魂
每一天只能痴痴的等
爱一个人别太认真
你受伤的眼神令人心痛
没有一个人
非要另一个人
才能过一生
你又何苦逼自己
面对伤痕
我知道你很难过
感情的付出不是真心就会有结果
别问怎么做爱才能长久
这道理有一天你会懂
我知道你很难过
昨天是恋人
今天说分说就分手
别问你的痛
要怎么解脱
多情的人注定伤得比较久
爱若变成了刺
思念也成了痴
也许心碎是爱情最美的样子
========================
还是忙的好,把论文弄完后一下子觉得不知道应该做什么好.以前忙的时候也天天听歌,但从来听不到歌词,只是在程序调好的时候随着音乐旋律晃几下脑袋.而今天,却听到了歌词.
sigh,"我知道你很难过…"
毕设和论文终于基本搞定了.十多天来几乎是每两天必通一次,那几天并不觉得怎么,到今天终于可以放松了一下子觉得好累.早上6点多起来和同学去打球,下午又去游泳,这就更累了.555,真想大睡三天.
中午在外边吃饭,那个米有些不熟,自己也知道自己的胃是什么样子,去年10月份就曾经响起过警报了,自己也一直注意着.不过一会要去游泳,所以多少还是得吃点,要不游泳都没有力气了.虽然只吃了那么一点点,肚子还是出问题了.实在郁闷.游泳那当,去了五六次厕所.搞的后来都不敢下水了.没想到肚子竟然这么不随我的愿.唉,想想马上就要开始的工作生活,大概以后得更多的注意一下肚子了吧…
保卫钓鱼岛
演唱:栗子
词:王磊 (海军上尉军官)
曲/编曲/制作:栗子
和音:杨峰
录音:栗子、戴亮军
所有乐器演奏:栗子
当那海面泛起了波涛,
还有座思念的岛礁,
在那风雨之中飘摇,
让我不能够忘掉。
那是母亲留下的伤痛,
为儿女们刻着的记号,
虽然远在天涯海角,
仍是中国的坐标。
烈焰高高,
燃我热血的火苗,
巨浪滔滔,
掀我爱国的狂潮,
保卫钓鱼岛,
赶走贪婪凶残的强盗,
捍卫我们美丽的家园,
夺回被抢的珍宝。
保卫钓鱼岛,
掀起巨龙悲怆的风暴,
誓在世界东方崛起,
使龙的传人感到,
无比骄傲!
谨将此作品献给:
我们的保钓先驱–陈毓祥烈士!
为了保卫祖国领土而前赴后继的勇士们!
==================================
原本以为可以有所保留的,所以在4月9号遇到北京游行的时候我选择了用心支持而不是行动。近来却一再看到那几个fucking Japanese的嘴脸,今天把这首歌做为网页上的背景音乐,希望能提醒自己,也能提醒每一个访问我网站的中国人,保卫钓鱼岛,保卫中华民族,对这种不思悔改的日本政府态度要坚决。
2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
二、引用Ajax这个概念的最早提出者Jesse James Garrett认为:
Ajax是Asynchronous JavaScript and XML的缩写。
Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括
使用XHTML和CSS标准化呈现;
使用DOM实现动态显示和交互;
使用XML和XSLT进行数据交换与处理;
使用XMLHttpRequest进行异步数据读取;
最后用JavaScript绑定和处理所有数据;
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

图2-1

图2-2
在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。
而使用Ajax后用户从感觉上几乎所有的操作都会很快响应没有页面重载(白屏)的等待。
1、XMLHTTPRequest
Ajax的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新更新页面),这一特点主要得益于XMLHTTP组件XMLHTTPRequest对象。这样就可以向再发桌面应用程序只同服务器进行数据层面的交换,而不用每次都刷新界面也不用每次将数据处理的工作提交给服务器来做,这样即减轻了服务器的负担又加快了响应速度、缩短了用户等候时间。
最早应用XMLHTTP的是微软,IE(IE5以上)通过允许开发人员在Web页面内部使用XMLHTTP ActiveX组件扩展自身的功能,开发人员可以不用从当前的Web页面导航而直接传输数据到服务器上或者从服务器取数据。这个功能是很重要的,因为它帮助减少了无状态连接的痛苦,它还可以排除下载冗余HTML的需要,从而提高进程的速度。Mozilla(Mozilla1.0以上及NetScape7以上)做出的回应是创建它自己的继承XML代理类:XMLHttpRequest类。Konqueror (和Safari v1.2,同样也是基于KHTML的浏览器)也支持XMLHttpRequest对象,而Opera也将在其v7.6x+以后的版本中支持XMLHttpRequest对象。对于大多数情况,XMLHttpRequest对象和XMLHTTP组件很相似,方法和属性也类似,只是有一小部分属性不支持。
XMLHttpRequest的应用:
XMLHttpRequest对象在JS中的应用
var xmlhttp = new XMLHttpRequest();
微软的XMLHTTP组件在JS中的应用
var xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
var xmlhttp = new ActiveXObject(Msxml2.XMLHTTP);
XMLHttpRequest 对象方法
/**
* Cross-browser XMLHttpRequest instantiation.
*/
if (typeof XMLHttpRequest == ‘undefined’) {
XMLHttpRequest = function () {
var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
for (var i=0; i < msxmls.length; i++) {
try {
return new ActiveXObject(msxmls[i]+’.XMLHTTP’)
} catch (e) { }
}
throw new Error("No XML component installed!")
}
}
function createXMLHttpRequest() {
try {
// Attempt to create it "the Mozilla way"
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
// Guess not – now the IE way
if (window.ActiveXObject) {
return new ActiveXObject(getXMLPrefix() + ".XmlHttp");
}
}
catch (ex) {}
return false;
};
XMLHttpRequest 对象方法
|
方法 |
描述 |
|
abort() |
停止当前请求 |
|
getAllResponseHeaders() |
作为字符串返问完整的headers |
|
getResponseHeader("headerLabel") |
作为字符串返问单个的header标签 |
|
open("method","URL"[,asyncFlag[,"userName"[, "password"]]]) |
设置未决的请求的目标 URL, 方法, 和其他参数 |
|
send(content) |
发送请求 |
|
setRequestHeader("label", "value") |
设置header并和请求一起发送 |
XMLHttpRequest 对象属性
|
属性 |
描述 |
|
onreadystatechange |
状态改变的事件触发器 |
|
readyState |
对象状态(integer): |
|
responseText |
服务器进程返回数据的文本版本 |
|
responseXML |
服务器进程返回数据的兼容DOM的XML文档对象 |
|
status |
服务器返回的状态码, 如:404 = "文件末找到" 、200 ="成功" |
|
statusText |
服务器返回的状态文本信息 |
JavaScript是一在浏览器中大量使用的编程语言,,他以前一直被贬低为一门糟糕的语言(他确实在使用上比较枯燥),以在常被用来作一些用来炫耀的小玩意和恶作剧或是单调琐碎的表单验证。但事实是,他是一门真正的编程语言,有着自已的标准并在各种浏览器中被广泛支持。
3、DOM
Document Object Model。
DOM是给 HTML 和 XML 文件使用的一组 API。它提供了文件的结构表述,让你可以改变其中的內容及可见物。其本质是建立网页与 Script 或程序语言沟通的桥梁。
所有WEB开发人员可操作及建立文件的属性、方法及事件都以对象来展现(例如,document 就代表“文件本身“这个对像,table 对象则代表 HTML 的表格对象等等)。这些对象可以由当今大多数的浏览器以 Script 来取用。
一个用HTML或XHTML构建的网页也可以看作是一组结构化的数据,这些数据被封在DOM(Document Object Model)中,DOM提供了网页中各个对象的读写的支持。
4、XML
可扩展的标记语言(Extensible Markup Language)具有一种开放的、可扩展的、可自描述的语言结构,它已经成为网上数据和文档传输的标准。它是用来描述数据结构的一种语言,就正如他的名字一样。他使对某些结构化数据的定义更加容易,并且可以通过他和其他应用程序交换数据。
5、综合
Jesse James Garrett提到的Ajax引擎,实际上是一个比较复杂的JavaScript应用程序,用来处理用户请求,读写服务器和更改DOM内容。
JavaScript的Ajax引擎读取信息,并且互动地重写DOM,这使网页能无缝化重构,也就是在页面已经下载完毕后改变页面内容,这是我们一直在通过JavaScript和DOM在广泛使用的方法,但要使网页真正动态起来,不仅要内部的互动,还需要从外部获取数据,在以前,我们是让用户来输入数据并通过DOM来改变网页内容的,但现在,XMLHTTPRequest,可以让我们在不重载页面的情况下读写服务器上的数据,使用户的输入达到最少。
基于XML的网络通讯也并不是新事物,实际上FLASH和JAVA Applet都有不错的表现,现在这种富交互在网页上也可用了,基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序。
Ajax是传统WEB应用程序的一个转变。以前是服务器每次生成HTML页面并返回给客户端(浏览器)。在大多数网站中,很多页面中至少90%都是一样的,比如:结构、格式、页头、页尾、广告等,所不同的只是一小部分的内容,但每次服务器都会生成所有的页面再返回给客户端,这无形之中是一种浪费,不管是对于用户的时间、带宽、CPU耗用,还是对于ISP的高价租用的带宽和空间来说。如果按一页来算,只能几K或是几十K可能并不起眼,但像SINA每天要生成几百万个页面的大ISP来说,可以说是损失巨大的。而AJAX可以所为客户端和服务器的中间层,来处理客户端的请求,并根据需要向服务器端发送请求,用什么就取什么、用多少就取多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于纯后台处理并重载的方式缩短了用户等待时间,也把对资源的浪费降到最低,基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序,所以Ajax对于用户和ISP来说是双盈的。
Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),而在以前两者是没有清晰的界限的,数据与呈现分离的分离,有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。也可以把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理。
举个应用的例子,是关于级联菜单方面的Ajax应用。
我们以前的对级联菜单的处理是这样的:
为了避免每次对菜单的操作引起的重载页面,不采用每次调用后台的方式,而是一次性将级联菜单的所有数据全部读取出来并写入数组,然后根据用户的操作用JavaScript来控制它的子集项目的呈现,这样虽然解决了操作响应速度、不重载页面以及避免向服务器频繁发送请求的问题,但是如果用户不对菜单进行操作或只对菜单中的一部分进行操作的话,那读取的数据中的一部分就会成为冗余数据而浪费用户的资源,特别是在菜单结构复杂、数据量大的情况下(比如菜单有很多级、每一级菜又有上百个项目),这种弊端就更为突出。
如果在此案中应用Ajax后,结果就会有所改观:
在初始化页面时我们只读出它的第一级的所有数据并显示,在用户操作一级菜单其中一项时,会通过Ajax向后台请求当前一级项目所属的二级子菜单的所有数据,如果再继续请求已经呈现的二级菜单中的一项时,再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据,以此类推……这样,用什么就取什么、用多少就取多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于后台处理并重载的方式缩短了用户等待时间,也把对资源的浪费降到最低。
此外,Ajax由于可以调用外部数据,也可以实现数据聚合的功能(当然要有相应授权),比如微软刚刚在3月15日发布的在线RSS阅读器BETA版;还可以利于一些开放的数据,开发自已的一些应用程序,比如用Amazon的数据作的一些新颖的图书搜索应用。
总之,Ajax适用于交互较多,频繁读数据,数据分类良好的WEB应用。
2、无刷新更新页面,减少用户实际和心理等待时间;
首先,“按需取数据”的模式减少了数据的实际读取量,打个很形象的比方,如果说重载的方式是从一个终点回到原点再到另一个终点的话,那么Ajax就是以一个终点为基点到达另一个终点;

图5-1
图5-2
3、更好的用户体验;
4、也可以把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,节约空间和带宽租用成本;
5、Ajax由于可以调用外部数据;
6、基于标准化的并被广泛支持和技术,并且不需要插件或下载小程序;
7、Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离);
8、对于用户和ISP来说是双盈的。
2、用JavaScript作的Ajax引擎,JavaScript的兼容性和DeBug都是让人头痛的事;
3、Ajax的无刷新重载,由于页面的变化没有刷新重载那么明显,所以容易给用户带来困扰――用户不太清楚现在的数据是新的还是已经更新过的;现有的解决有:在相关位置提示、数据更新的区域设计得比较明显、数据更新后给用户提示等;
4、对流媒体的支持没有FLASH、Java Applet好;
