zoukankan      html  css  js  c++  java
  • Web前后端数据交换技术和规范发展史:Form、Ajax、Comet、Websocket

    第一阶段:Form
    web应用想要与服务器交互,必须提交一个表单(form)。服务器接收并处理该表单,然后返回一个全新的页面。
    缺点:前后两个页面需要更新的数据可能很少,这个过程可能传输了很多之前那个页面已经有的数据,浪费了带宽;为了返回整个页面,服务器可能需要为页面的其他内容构造数据,浪费服务器资源。
     
    第二阶段:Ajax(Asynchronous JavaScript and XML)
    由JS脚本发送http请求,服务器只返回页面需要更新的那部分数据,JS根据返回的数据刷新页面的局部内容,而不是刷新整个页面。
    优点:网络传输小、服务器负担小
    缺点:没有解决对实时性的友好支持(比如聊天室或客服系统),如果需要持续地从服务器获取数据,需要不断请求
     
    第三阶段:Comet
    一种hack技术,基于http长连接的“服务器推”的技术。实现方式有很多种,比如基于Ajax的长轮询(long-polling)、封装好的Comet4J等。
    比较简单的是基于Ajax的长轮询:web应用发出Ajax请求,服务器收到请求后,如果有数据就即刻返回,如果没数据,会等待一段时间(比如定时20秒),在等待的时间内,如果有数据就返回,如果一直没数据,则timeout的时候返回。web应用收到服务器的返回后,处理数据、更新页面,再继续请求。服务器在发送完数据到接收到一个新请求之前,如果有数据需要发送,则先缓存起来,等待接到下一次请求后再发送。
    优点:基本解决了实时性的问题
    缺点:服务器需要阻塞线程等待数据,如果连接请求多的话,得考虑使用复杂的技术释放线程给其他请求使用,不然可能会拖死服务器。需要客户端和服务器端协调好才能正常工作。
     
    第四阶段:Websocket
    html5标准中的一种全双工通信规范,基于TCP协议,与http协议兼容,但不是http协议的一部分。
    web应用(客户端)先发起一个Handshake请求,服务器应答之后,就可以双向交换数据了。
    通信的两方都可以发起关闭的请求(通过发送一个Closing Handshake),对方收到请求后,回复一个相同的数据包,就关闭通信通道了。
    优点:数据传输量极少、实时性好。
     
    PS. 此外,双向通信还可以通过flash的socket和xmlsocket实现。但它不属于某一个web规范。
     
    版权声明:本文为原创文章,转载请注明转自Clement-Xu的csdn博客。 https://blog.csdn.net/ClementAD/article/details/50563569
  • 相关阅读:
    C#串口通信程序实现无感知签到与答题
    C# 调用adb command 读取手机型号和IMEI
    sql 截取字符串
    .NET下的ORM框架有哪些
    linq-to-sql实现left join,group by,count
    C# 生成二维码
    数据库面试题.net
    .net面试中的一些常见问题与答案
    Jquery判断其中任意一个文本框的值是否被修改
    矩阵乘法的MPI并行计算
  • 原文地址:https://www.cnblogs.com/itcui/p/9128945.html
Copyright © 2011-2022 走看看