AJAX 概念 优点 发展前景 工做原理 底层技术 状态 缺点 框架

1. 概念javascript

Ajax asynchronous JavaScript and XML , 异步js和xml. java

这种解释已通过时了, 如今ajax就是, 容许浏览器和服务器通讯, 而无需刷新当前页面的技术. web

它原本是微软的技术, 是Google 在 google earth、google suggest以及gmail等对ajax技术的普遍应用,催生了ajax的流行。事实上google目前在ajax技术方面的领先是微软所没法达到的ajax

2. 发展前景浏览器

Gmail在收发邮件的时候已经和Outlook Express的功能几乎没有差异了,并且它不须要安装客户端程序。现有的浏览器尚未一个能像PhotoShop等桌面程序那样处理复杂的图像。可是咱们也不能忽视它带来的影响和冲击。缓存

3. 优点(提高用户体验)安全

用户体验打比方,若是如今你家里所在的小区因 某种状况而面临停水,如今有关部门公布了两种方案,一是彻底停水8个小时,在这8个小时内彻底停水,8个小时后恢复正常。二是不彻底停水10 个小时,在这10个小时内水没有彻底断,只是流量比原来小了不少,在10个小时后恢复正常流量,那么,若是是你你会选择哪一种方式呢?显然是后者。服务器

异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。框架

异步通常每一个小组是一个8位字符,在每一个小组的头部和尾部都有一个开始位和一个中止位,它在传送过程当中接收方和发送方的时钟不要求一致,也就是说,异步发送方能够在任什么时候刻发送这些小组,而接收方并不知道它何时到达。异步

每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收 和缓存数据比特的时间;在传输结束时,一个中止位表示该次传输信息的终止。中止位使信号从新变回1,该信号一直保持到下一个开始位到达。

同步传输的比特分组要大得多。它不是独立地发送每一个字符,每一个字符都有本身的开始位和中止位,而是把它们组合起来一块儿发送。咱们将这些组合称为数据帧,或简称为帧。确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。

同步也有好处:同步传输一般要比异步传输快速得多。接收方没必要对每一个字符进行开始和中止的操做。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。另外,同步传输的开销也比较少。

缺点:数据比特位越长,缓存数据所须要的缓冲区也越大,这就限制了一个帧的大小。另外,帧越大,它占据传输媒体的连续时间也越长。在极端的状况下,这将致使其余用户等得过久。


4. 工做原理及赖以工做的底层技术

经过XmlHttpRequest对象来向服务器发异步请求,从服务器得到数据,而后用javascript来操做DOM而更新页面。

XMLHttpRequest这个对象的属性。

它的属性有:

   onreadystatechange  每次状态改变所触发事件的事件处理程序。

  responseText     从服务器进程返回数据的字符串形式。

  responseXML    从服务器进程返回的DOM兼容的文档数据对象。

  status           从服务器返回的数字代码,好比常见的404(未找到)和200(已就绪)

  status Text       伴随状态码的字符串信息

  readyState       对象状态值

    0 (未初始化) 对象已创建,可是还没有初始化(还没有调用open方法)

    1 (初始化) 对象已创建,还没有调用send方法

    2 (发送数据) send方法已调用,可是当前的状态及http头未知

    3 (数据传送中) 已接收部分数据,由于响应及http头不全,这时经过responseBody和responseText获取部分数据会出现错误,

    4 (完成) 数据接收完毕,此时能够经过经过responseXml和responseText获取完整的回应数据

5.缺点

ajax的缺点

  下面我着重讲一讲ajax的缺陷,由于平时咱们大多注意的都是ajax给咱们所带来的好处诸如用户体验的提高。而对ajax所带来的缺陷有所忽视。

  下面所阐述的ajax的缺陷都是它先天所产生的。

   一、ajax干掉了back按钮,即对浏览器后退机制的破坏。后退按钮是一个标准的web站点的重要功能,可是它无法和js进行很好的合做。这是ajax所带来的一个比较严重的问题,由于用户每每是但愿可以经过后退来取消前一次操做的。那么对于这个问题有没有办法?答案是确定的,用过Gmail的知道,Gmail下面采用的ajax技术解决了这个问题,在Gmail下面是能够后退的,可是,它也并不能改变ajax的机制,它只是采用的一个比较笨可是有效的办法,即用户单击后退按钮访问历史记录时,经过建立或使用一个隐藏的IFRAME来重现页面上的变动。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,而后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)

可是,虽说这个问题是能够解决的,可是它所带来的开发成本是很是高的,和ajax框架所要求的快速开发是相背离的。这是ajax所带来的一个很是严重的问题。

     二、安全问题

技术同时也对IT企业带来了新的安全威胁,ajax技术就如同对企业数据创建了一个直接通道。这使得开发者在不经意间会暴露比之前更多的数据和服务器逻辑。ajax的逻辑能够对客户端的安全扫描技术隐藏起来,容许黑客从远端服务器上创建新的攻击。还有ajax也难以免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。

     三、对搜索引擎的支持比较弱。

     四、破坏了程序的异常机制。至少从目前看来,像ajax.dll,ajaxpro.dll这些ajax框架是会破坏程序的异常机制的。关于这个问题,我曾经在开发过程当中遇到过,可是查了一下网上几乎没有相关的介绍。后来我本身作了一次试验,分别采用ajax和传统的form提交的模式来删除一条数据……给咱们的调试带来了很大的困难。

     五、另外,像其余方面的一些问题,好比说违背了url和资源定位的初衷。例如,我给你一个url地址,若是采用了ajax技术,也许你在该url地址下面看到的和我在这个url地址下看到的内容是不一样的。这个和资源定位的初衷是相背离的。

     六、一些手持设备(如手机、PDA等)如今还不能很好的支持ajax,好比说咱们在手机的浏览器上打开采用ajax技术的网站时,它目前是不支持的,固然,这个问题和咱们没太多关系。

6.ajax的几种框架

目前咱们采用的比较多的ajax框架主要有ajax.dll,ajaxpro.dll,magicajax.dll 以及微软的atlas框架。Ajax.dll和Ajaxpro.dll这两个框架差异不大,而magicajax.dll只是封装得更厉害一些,好比说它能够直接返回DataSet数据集,前面咱们已经说过,ajax返回的都是字符串,magicajax只是对它进行了封装而已。可是它的这个特色能够给咱们带来很大的方便,好比说咱们的页面有一个列表,而列表的数据是不断变化的,那么咱们能够采用magicajax来处理,操做很简单,添加magicajax以后,将要更新的列表控件放在magicajax的控件以内,而后在pageload里面定义更新间隔的时间就ok了,atlas的原理和magicajax差很少。可是,须要注意的一个问题是,这几种框架都只支持IE,没有进行浏览器兼容方面的处理,用反编译工具察看他们的代码就能够知道。

除了这几种框架以外,咱们平时用到的比较多的方式是本身建立xmlHttpRequest对象,这种方式和前面的几种框架相比更具备灵活性。另外,在这里还提一下aspnet2.0自带的异步回调接口,它和ajax同样也能够实现局部的无刷新,但它的实现实际上也是基于xmlhttprequest对象的,另外也是只支持IE,固然这是微软的一个竞争策略。

相关文章
相关标签/搜索