董师傅茶坊(18)

董师傅茶坊

Ajax到底有多大力量

张昕楠(软件构架师)

董师傅:Web 2.0的快速蹿升无疑是近年来IT领域的最重要趋势之一,而Ajax作为最重要的Web 2.0开发框架正成为开发人员追逐的焦点。为了让读者更加深入地了解Ajax在软件开发领域的变革性力量,我们在本期话题馆中邀请到了离子翼信息安全实验室的软件架构师张昕楠来共同探讨有关Ajax的一些问题。

近两年Web 2.0正成为网络用户关注的焦点,而Ajax这个名词也被频繁地与Web 2.0一并谈论,不过一个令人有些费解的现象是,并不是所有的用户都能够清楚地说出Ajax到底是什么。大家对Web 2.0本身也是众说纷纭,很难下一个准确的定义,我觉得在这方面两者倒颇有异曲同工之处。

张昕楠:这个现象确实有一定的普遍性,原因也是多方面的。最重要的一个原因在于大家往往只从技术角度来解释Ajax,而事实上Ajax并不是一个单一的技术概念。在技术范畴之外,Ajax还包含了很多Web用户体验方面的元素。这也是为什么舆论普遍认为Ajax是一种Web 2.0技术的原因,毕竟Web 2.0的创新价值有很大一部分来自于对用户体验和用户作用的重视。

董师傅:以管窥豹的方式确实在Ajax的认识上造成了不少的误解,这可能就是那些以“新技术”的角度了解Ajax的用户不得门径的原因吧。

张昕楠:应该说Ajax首先就不是一项纯粹的技术,而更近似于一个技术框架。同时,Ajax体系当中也并没有什么新的技术元素,其核心是JavaScript技术,一种以往被认为与企业应用绝缘而只适用于在客户端展示一些“小把戏”的编程语言,而XML、XHTML、DOM、XMLHttpRequest、CSS等经常被用于实现Ajax的技术元素也是得到多年应用的成熟技术。

董师傅:不过就是这些“常见”技术的创造性组合为我们带来了令人叹服的用户体验,可见模式的创新是多么具有冲击力。

张昕楠:Ajax彻底颠覆了传统Web应用在用户交互方面的模式,这是不可否认的。在传统的Web体验当中,用户已经习惯了在请求服务器数据之后的等待和显示这些数据时的页面刷新,这种交互方式是低效和不连贯的。

Ajax所倡导的方式则能够大大优化用户的使用感受。由于在服务器和浏览器程序之间的数据传递交由JavaScript控制,开发人员得以跳出以往严格的请求应答模式从而构建更具用户友好性的Web应用。

举一个简单的例子,当用户请求新的数据内容时,传统的Web机制只能等待服务器将全部数据返回,然后刷新并重新显示整个页面;而Ajax则只请求那些需要改变的内容,同时只改变那些需要改变的区域,而并不对整个页面进行刷新。这种能力不但使刷新成为了Ajax带给用户的最主要印象,而且由于数据传递量的有效降低使得Ajax成为缓解Web性能瓶颈的重要武器。

董师傅:从这个角度来看,Ajax确实称得上Web 2.0技术的典型代表,这不禁让我想起了Windows图形操作系统替代DOS操作系统的过程。除了在用户接口上展示出更大的吸引力之外,系统核心的变革也在发挥重要的作用。

张昕楠:窗口操作系统在外观和使用上确实带来了巨大的变革,但是用户体验的巨大提升与内在功能的支撑是分不开的,Ajax之于Web也是如此。

回顾Windows对DOS的替代,Ajax正在经历同样的过程。除了在用户接口上展示出更大的吸引力之外,Ajax第一次使Web用户接口实现了多任务。由于页面可以不需要全部刷新,在一个区域正在等待数据返回并改变自己外观的时间里,用户则可以不必等待而继续执行其他操作;相应地,用户向服务器提交数据也不必等待数据全部被传送到服务器再进行其他操作。

也就是说,用户与浏览器的操作交互、浏览器与服务器的数据交互是可以“异步”进行的,这也是Ajax这个名字的由来,Ajax的英文全称是Asynchronous JavaScript and XML。

董师傅:Ajax对用户群体的号召力已经获得了很多证明,应用随需求而动,Ajax也正成为开发群体新的追逐目标了,相信在Web开发领域一定会掀起不小的波澜。但是很多人有一个疑问,Ajax是否已经给人们展示了一条康庄大道了呢?按照IT界的发展规律来看,至少目前还没有出现过完美的技术。

张昕楠:究其本质来看,Ajax对于传统开发阵营来讲并不是一种颠覆性的冲击,而更贴近于一种增强。基于Web应用体验的改善以及为交互方式提供的更多可能性,会有越来越多的Web应用程序采用Ajax机制来实现。

目前已经涌现出大量成熟的Ajax应用,这些具体的应用或者是自成体系的开发框架,或者是与特定编程语言的接驳,事实上Java、PHP、ASP等主流Web开发平台已经都可以与Ajax框架进行良好的挂接。

话说回来,无论是Ajax的模式还是所依托的具体技术在很多年前就已经出现了,之所以到今天才获得应用和认同,说明再先进的东西也只有在被需要的情况下才会得到真正的发展。

但是,目前Ajax还处于前景与风险并存的阶段。虽然在应用领域Ajax已经取得了一定的进展,并且在用户认知度和影响力上也具有了相当的积累,但是其发展道路仍不能说一马平川。

董师傅:Ajax并不是一枝独秀,包括MacroMedia的Flex等很多技术体系都在尝试提供更强的用户体验,随着Web异步交互的需求成长,会有越来越多的技术涌现出来。而目前Ajax的实现也是多种多样的,不能尽早的形成标准无疑将分散Ajax的发展力量。

另外,不但用户群体中存在着对Ajax的认识模糊,即使是专业的开发人员,对Ajax的理解也千差万别。很多开发人员将Ajax视为一支不折不扣的潜力股、软件开发领域的下一个Java,这些都过分强调了Ajax在市场效应方面的作用,反而在一定程度上扼杀了Ajax的真正价值。与其进行浮躁的期待和冲动的吹捧,不如切实地学习和发挥Ajax在用户交互方面的优点。

董师傅热线

上网弹出系统安装程序

合肥 丰丰:请问董师傅,我的电脑最近只要一上网或者是运行其他一些程序,就会弹出一个“Windows Installer”的安装程序。可是等了好半天也不能安装,取消也不行,只有到任务管理器中强行终止,但是这样做经常容易使其他的程序关闭。我这几天都不敢上网了,师傅,我该怎么办啊?

A:Windows Installer(Windows安装服务)是一种通用的软件发布方式,现在许多软件都使用Windows Installer作为自己的安装程序,有时因为各种原因以及Windows Installer本身的缺陷,会导致Windows Installer出错。 请按以下步骤来解决:

1.重新安装Windows Installer。Office XP安装盘的根目录有两个名为instmsi.exe和InstMsiW.exe的文件,instmsi.exe用于Windows 9X/Me,InstMsiW.exe用于Windows 2000/XP。

2.打开“组策略→计算机配置→管理模板→Windows组件→Windows Installer→禁用Windows Installer”,只是这样一来,很多软件就不能安装了,此法用于Windows 2000/XP。

自己能否刻ISDN码

重庆 甘淼:现在许多电子杂志送的光盘在数据面的内侧都刻有杂志社的名称或者ISDN码。请问这是怎么刻上的?普通的刻录机能做到吗?

A:不能,那些光盘一般是杂志社自己制作内容,把内容刻进去,然后送盘给专门的单位制作出来,最终面市的一般都有那些标志,这不是杂志社(包括个人)自己能制作的。

处理漏洞扫描结果

上海 张真:我有一些困惑要你帮忙解答。我的系统是Windows XP SP2,我在瑞星漏洞扫描时,它的扫描报告总是说:1.没有禁用来宾账号;2.系统管理员权限的用户过多;3.您的计算机中有被共享的目录和磁盘。三个漏洞我找了几遍,没有办法解决。请问是什么原因?

A:这些报告严格来说并不是漏洞,但有安全风险。禁用来宾账号,去“计算机管理→本地用户和组→用户”,禁用Guest即可;系统管理员权限的用户过多的问题,留一个内置的Administrator账户即可。

Windows XP默认就共享了IPC$、C$、D$等,要关闭这些共享,打开注册表:HKEY_LOCAL_MACHINE_SYSTEM_CurrentControlSet_Sevices_lanmanworkstation_parameters,新建一个名为“AutoShareWKs”的双字节值,并将其值设为“0”,然后重新启动电脑,这样共享就取消了。

如何删除服务

天津 陈菲:我的系统是Windows XP 版本,瑞星提示我在C:\WINDOWS\SYSTEM32A2.SYS发现无效的系统服务,请在注册表删除。请问怎么在注册表删除这个服务?

A:要删除那个system32a2.sys的无效的系统服务,你可以这样解决:在Windows XP下有一个sc命令行程序。进入command命令行,然后执行sc服务名 delete就可以了。不过你要先找到调用它的服务名,在“控制面板→性能维护→管理工具→服务”里看看是什么服务调用这个文件。

在PowerPoint中调用外部程序

南昌 黄天德:董师傅,我是一名教师,经常用到PowerPoint制作课件。请问在PowerPoint中如何调用外部应用程序?

A:在PowerPoint中采用在对象上建立超链接,与应用程序链接起来的方法就可以满足你的要求。如打开几何画板可建立超链接为“c:\sketch\ gsketchp.exe”。如果要打开指定的GSP文件,可设为“c:\sketch\readme.gsp”,PowerPoint会自动用几何画板系统打开GSP文件。其他调用与此类似。

Flash8里字体无故改变

武汉 杨明:我在家里做了个动画,怎么放到别人的电脑里播放时,字体就和原来的字体不同了?请问怎么解决?

A:那是因为你使用的字体不是系统自带的字体,而别人的电脑上又没有这种字体,所以Flash播放器播放时就使用默认的字体,解决的办法是选中文字,按“Ctrl+B”组合键,将它打散就可以了(如果文字在symbol里,一定要在symbol里打散,不要在场景中打散,否则渐变动画就没了)。不过这样做会稍微加大最后Flash文件的体积。

在Excel中拆分一列数字

山东 蒙小民:我想请教一个关于Excel的问题。在Excel里如何把一列中的数字拆分为两列?我打个比方,如果一列中有个数字为123456,怎么把它拆为两列,一列为1234,一列为56,希望董师傅帮帮忙。

A:先选定该列(假定为A列),将其格式设置成文本; 在其后插入两空列(B和C列); 在B1输入公式=LEFT(A1,4) 在C1输入公式=RIGHT(A1,2),将B1公式复制到B列其他单元格,将C1公式复制到C列其他单元格。说到这里,董师傅不得不承认Excel确实很强大。