第一阶段: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

Web前后端数据交换技术和规范发展史:Form、Ajax、Comet、Websocket的更多相关文章

  1. web前后端数据交互

    前后端数据交互是每一名web程序员必须熟悉的过程,前后端的数据交互重点在于前端是如何获取后端返回的数据,毕竟后端一般情况下只需要将数据封装到一个jsonMap,然后return就完了.下面通过一个li ...

  2. thymeleaf实现前后端数据交换

    1.前端传数据后端接收: 用户在登录界面输入用户名和密码传给后端controller,由后端判断是否正确! 在html界面中要传递的数据name命名,通过表单的提交按钮会传递给响应的controlle ...

  3. Web前后端缓存技术(缓存的主要作用是什么)

    Web前后端缓存技术Web前后端缓存技术(缓存的主要作用是什么) 一.总结 一句话总结: 加快页面打开速度 减少网络带宽消耗 降低服务器压力 1.在Web应用中,应用缓存的地方有哪些? 主要有浏览器缓 ...

  4. 淘宝玉伯引发Web前后端研发模式讨论

    淘宝玉伯是是前端基础类库 Arale 的创始人,Arale 基于 SeaJS 和 jQuery.不久前,淘宝玉伯在 Github 的 Arale 讨论页面上抛出了自己对于Web 前后端研发模式的思考. ...

  5. 【springMVC】简单的前后端数据交流

    最最常见两种,一则返回视图模板(文档),二则为json数据.就使用一个源代码文件来看看springmvc是怎么做到的. 1.UserController.java源代码文件 (这里额外的使用了fast ...

  6. 两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)

    一个HTML页面只能显示HTML代码信息,不能与数据库进行数据的交互.asp.net方案提供了网页与数据库交互的方法,这里举出两种:①aspx文件 ②ashx文件+ajax技术 一.创建数据库 这里以 ...

  7. 如何简单区分Web前后端与MVC

    MVC是开发所有软件所必须涉及的基本几个划分 M主要负责数据与模型,V主要负责显示C主要负责交互与业务所以不管是前端还是后端,都是有MVC的.MVC是一个对于软件简单的抽象,不管是M还是V,还是C都是 ...

  8. SpringMVC参数绑定学习总结【前后端数据参数传递】

    目录 1. 绑定机制 2. 支持的数据类型 3. 参数请求中文乱码解决 4.自定义类型转换器 5.最后参数绑定学习小结 SpringMVC作为Controller层(等价servlet和struts中 ...

  9. 对GraphQL-BFF:微服务背景下的前后端数据交互方案的研究-------引用

    随着多终端.多平台.多业务形态.多技术选型等各方面的发展,前后端的数据交互,日益复杂. 同一份数据,可能以多种不同的形态和结构,在多种场景下被消费. 在理想情况下,这些复杂性可以全部由后端承担.前端只 ...

随机推荐

  1. Android自动化测试-UiAutomator2环境搭建

    Android自动化测试-UiAutomator环境搭建(QQ交流群:490451176) 一.环境准备 1. 安装android sdk,并配置环境变量 2. 安装android studio,国内 ...

  2. Dubbo 基础教程

    原文地址:Dubbo 基础教程 博客地址:http://www.extlight.com 一.前言 当服务越来越多时,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实 ...

  3. 用JavaScript解决Placeholder的IE8兼容问题

    <script type="text/javascript"> if( !('placeholder' in document.createElement('input ...

  4. redis3.0自带集群配置

    参考 http://redis.readthedocs.org/en/latest/topic/cluster-tutorial.html http://yindashan.github.io/blo ...

  5. mac下执行 appium-doctor 出现 “Could not detect Mac OS X Version from sw_vers output: '10.12 '” 解决方法

      You can config file by this command: grep -rl "Could not detect Mac OS X Version from sw_vers ...

  6. 常见的加密和解密算法—DES

    一.DES加密概述 DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并 ...

  7. 补充: istio安装

    首先有一个概念: CRD - Custom Resource Definitions: CRDS文件: install/kubernetes/helm/istio/templates/crds.yml ...

  8. Android Studio 使用socks代理

    Android Studio 使用socks代理 准备工作 1. 从https://www.privoxy.org/下载Privoxy软件 2. 安装Privoxy 3. 在Privoxy安装目录找到 ...

  9. 跟我学算法-图像识别之图像分类(上)(基础神经网络, 卷积神经网络(CNN), AlexNet,NIN, VGG)

    1.基础神经网络: 输入向量x,权重向量w, 偏置标量b, 激活函数sigmoid(增加非线性度) 优化手段: 梯度下降优化, BP向后传播(链式规则) 梯度下降优化: 1. 使用得目标函数是交叉熵  ...

  10. 使用通配符配置action

    建立struts2wildcard项目,此实例基本仿照前面前面第7点的实例改写而成.为了使用通配符,只需要改写配置文件即可.此实例未使用通配时的配置文件如下: <action name=&quo ...