Ajax与Comet

Ajax技术已经得到很广泛的应用,在Web开发中其核心就在于异步通信和局部刷新,极大地改善了用户体验,尤其适合于高频度、低数据量的场景。在不使用Ajax的Web应用中,一个页面处理中只有一次请求,客户端处理完后一次性提交,这种一次请求和一次提交的处理可能比较耗时,从而造成客户等待,使用Ajax把这一次请求和一次提交分割成了多次小的请求和提交,先处理最关键的部分,其他处理可以以异步的方式后台处理,对界面的更新也可以做到只刷新需要更新的部分,不需要整个页面提交再刷新。Ajax的处理模式和传统的Http请求模式是一样的,也是有客户端发出Http请求,服务端处理以后返回数据,是一种拉的模式。

Comet是在Ajax基础上发展起来的一种新的Web开发架构模式,目前的Ajax只能使用拉的模式向服务器发请求,而Comet技术提供了一种由服务器向客户端推信息的处理模式,不需要客户端向服务端发送请求,服务器可以在需要的时候向客户端推送信息,这种模式在一些实时性要求较高的应用中特别有用,如聊天系统、实时股票信息等。在FLEX和Silverlight中都提供了基于Socket的连接,支持从服务器推送信息到客户端,但这种方式需要客户端安装FLASH或Silverlight运行时,Comet技术提供一种采用Ajax技术实现的服务器推技术,这种技术需要服务器端的支持,目前已有一些Java框架支持,客户端通常有两种处理模式,一种是基于Http的长连接模式,即客户端向服务器发送请求后不是马上用完就关闭连接,而是一直连接,只到服务器发送相关信息以后才关闭并建立新的连接(根据处理框架不同,可能实现技术也不一样),拿一个聊天系来说,所有用户都打开一个连接到服务器上,直到收到信息,则接收信息,关闭连接,然后又建立一个新的连接到服务器等待,或者重用原来的连接,而传统的Ajax模式是客户端轮询服务器,有信息返回信息,没信息返回空。Comet采用这种长连接模式,可以做到很实时的接收到服务器信息。另一种方式是使用Http Stream的方式,但好像IE不支持Ajax Stream,所以现在有很多框架采用隐藏的Iframe技术来实现。

那么在实际应用中如何选择到底是使用传统的Ajax还是新的Comet技术呢?这个要看具体的应用场景的需求,很多时候使用拉或者推的方式都可以满足应用的要求。传统的Ajax方式和通常的HTTP请求响应模式是一样的,所有服务器都支持,对服务器的要求小,是被广泛使用的技术。Comet这种模拟服务器推的技术在某些场合也很有用,但要求服务器端提供一些支持,同时对服务器端对连接、线程等资源的管理要求更高,如果处理不当,则会带来较大的性能问题和不稳定性问题,在大型应用中要慎重使用。某些时候使用FLEX或Silverlight中提供的Socket连接的方案更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值