Farseer

导航

Ajax---序言

最近Ajax是在网络上比较一个名词,跟阿贾克斯同样的名字,更增加了它的什么色彩。其实Ajax的出现是自然而然的,甚至以前已经有很多人做过类似的事情。昨天还看到在一篇文章中一个家伙叫苦不迭地说:“哎,其实这个做法我在几年前的项目就采用了,只是没有给它取一个响亮的名字!”。

我一直觉得C/S的桌面程序挺好的,给用户的体验也是一流的。为了不部署客户端,想出了B/S用浏览器去客户端的做法,按照阿兰.库伯的说法就是一个蹩脚的项目经理命令下面的人做出一个不需要安装就可以使用的客户端程序,于是程序员想到了用浏览器充当客户端的做法。如果浏览器也需要复杂的安装过程,B/S的优势又在哪里呢?我一直怀疑需要在客户端呈现大量数据的情况下,B/S模式是否能够经受住考验。在浏览器呈现的数据超过2M,如果需要把这些数据Post到服务器端,Http协议如何实现那?昨天浏览器的数据超过了2M,结果在Post服务器的时候,程序说,超过了文件大小的限度,哈哈。我觉得在有大数据量需要回传服务器的情况下,B/S模式根本就不是可取的办法。

企业软件在大多数情况下在客户端呈现的数据不是很大,因为用户关注的数据是有限的。如果通过认真的调研,确切地知道用户最关心的数据是那些的话,我想每个人关心的数据不会超过10条,你在同一时刻能记住几个人的名字那?这又属于用户交互设计层面的东西。我们的系统太漠视客户的真实感受,有人说这是客户要求的,客户不可能准确地表述自己的需求的,必须通过提炼。动辄就几万条的数据Send到浏览器上,致使客户端其慢无比,那几万条数据真的有必要吗?真的是客户想要的吗?绝对不是的。对于区域设定,赋权,预算设定这样的页面,确实需要很大的数据量回传到服务器端,可是可爱的程序员,有没有考虑过,这些页面有多少人会用到?也许就一个人会用到,那么为什么不给它开发一套桌面程序,宁可硬着头皮调整B/S的性能也不肯写一个简单的桌面程序,是用户的犯贱,还是程序员的固执?

好像跑题了,哈哈。

为什么需要Ajax这样的技术?

 下面是给客户培训是,跟客户的一次有趣的交谈:

一个PPMM基本上无法容忍页面频繁刷新,和浏览器上纵横交错的滚动条(我们开发的时候用的是1024*768,客户的机子是800*600,并且大量采用了Iframe,所以滚动条经常出现6-8个的情况),她甚至无所适从,就差把显示器推倒地上揣两脚.
我强忍住没笑出声来:"B/S模式是这样的,你去登陆新浪的时候不也是会刷新的吗?"
PPMM终于没把显示器推到地上,在一个输入框输入的时候,她突然想到了她原来用的系统可以根据输入的内容在输入框的下方给出一个智能提示的列表,她的眼睛一下子亮了起来:"能不能给我一个提示列表?"
"那你每输入一个字符要刷新一次"。
"Oh,My God!那我不要了!",PPMM杏目圆瞪,惊恐万分,看来她对刷新已经到了无法容忍的程度,宁可记住所有的产品型号,也不愿意接受刷新的折磨。

其实,Ajax出现的原因就像上面的对话这么简单,不要刷新!

为什么会刷新那?地球人都知道啊,哈哈。传统的HttpRequest需要提交整个页面,然后同步地等待服务器端传递整个页面,最后浏览器重新加载由服务器传过来的页面,于是刷新出现了。
如何不刷新那?很简单啊,不提交整个页面,只刷新页面的需要刷新的部分就可以了,不需要改动的数据不做改变,由于没有提交整个页面,只是刷新了一些字段的数据,所以也就没有刷新的体验了。
如何不提交整个页面?MS早就用这个技术了XmlHttp。其实我用WebServices和MSXML2.DOMDocument也可以做到无刷新的效果。不过既然这里讨论的是Ajax,WebServices就暂且不提了。

好了,上面是对Ajax我自己认识,接下来我会通过翻译几篇文章的方式来阐述Ajax的由来,原理和实现方式,总觉得他们说的经典多了,哈哈。

posted on 2005-07-14 22:07  佛西亚  阅读(249)  评论(0)    收藏  举报