Web计算本地化(前端技术)历史-HTML->CSS->Javascript

最初的网络上传输的内容是【纯文本】的,从网络上传输回来直接通过字符界面展示出来就够了,本地几乎不用计算。

后来,为了更直观,更层次化展现网络内容,人们在文本的基础上加上了什么<h1>之类的标签,于是出现了【HTML】,这时候,就出现了浏览器,浏览器是把这些标签解释,并且按照一定格式渲染,这时,就需要一定的本地计算来进行标签分析,字体渲染之类的。

再往后,出现了【CSS】,并且互联网有了富媒体元素,可以把网页展现的漂亮了,要求本地计算更多了。

但是,这还不够,除了将网页做得漂亮外,还需要减少用户的等待时间,提高用户体验。这时,有人发现,其实很多网络通信是可以避免的,比如,在用户登陆界面,用户输出email格式的用户名,之前是需要将这个信息发给服务器,服务器收到信息后,检查是否合法,不合法的话,返回一个页面,叫用户重新填写,这一来一往很花时间,用户体验非常不好。于是有人就想到,能不能把这些检查用户名之类的计算放到本地,于是,就出现了【JavaScript】,在用户提交信息时,JS可以在本地检查是否合法,不合法的话,提示原因并要求重新输入,这样用户体验就好了,并且减少服务器计算以及通信(这貌似符合绿色通信的概念)。

再往后,有人发现,每次点击一个链接,在载入下一个页面的时候,出现空白页让用户很不爽,于是,有人想出了一个办法,那就是事实上,很多页面很大一部分是共同的,这部分其实不需要重新加载,只需要加载改变的部分(局部刷新),而这又可以通过JS实现,于是出现了【Ajax】技术。这个技术减少了空白等待,提高了用户体验,并且减少了网络通信量(有时绿色通信!)。

Web计算本地化进一步发展-Java-applet,Flash,html5

但是,用户在互联网上的需求还是没有得到满足,有人还想直接在网页上处理图片,玩游戏之类的,由于这类应用一方面计算量大,都放到服务器,服务器不堪重负,另一方面,这类应用都是实时生成画面的,假如通过服务器来计算生成画面(如游戏),再通过网络将每帧图像实时传送回来,对网络要求极高,几乎不可能实现。

于是,需要新的技术将更多的计算放到本地,这时候,出现【Java applet,flash】等。Java applet允许在网页中嵌入java程序,并在本地执行。Flash应该也是类似,只不过这些计算需要通过flash提供的api完成(这一点有点类似ActiveX通过COM来完成本地计算?)。

Flash的出现,一段时间内,几乎是一统互联网的视频播放以及网页游戏领域。这时,有人眼红也好,有人有更好的主意也好,结果就是有人抱怨flash不开放(还有不安全),有人就想到,我们做一个开放的标准,这标准里面就允许类似游戏等复杂的交互,于是出现了HTML5和CSS3。HTML5以及CSS3将很多JS以及Flash能完成的功能都已到了一个HTML标签里,其实,本质还是差不多,只是这时候这些渲染的计算不是通过flash程序来了,而是直接通过浏览器执行了。

云计算时代的本地计算-Native Client

再往后,随着网络带宽的增长,以及服务器存储能力的提高,出现了大量的数据中心,为了提高这些中心的利用率,出现了云计算。在云计算时代,用户可以把很多数据都放在云端,并且访问这些应用的方法都是统一的。开发者在云服务器开发程序的接口也是统一的(PaSS),这就可以很容易实现跨平台,给用户一个统一的体验。

在这个时代,由于访问云端的资源都是通过浏览器完成的,浏览器就成为一个很重要的平台,这也就是为什么Google会推出自己的浏览器以及ChromeOS的原因。在浏览器能做的事也越来越多,如玩游戏,但是,由于这些游戏是通过一个类似flash这样的东西执行的,效率很低,为了提高效率,并且进一步的将更多的计算密集的东西(如3D渲染)放到本地完成高性能本地计算,Google提出【Native Client】技术,这种技术就是想直接在本地执行C/C++/Java/Python等代码,从而提高本地计算的效率。

从这里,也可以看出Google的野心,Google希望以后用户所有的需求都能在浏览器上完成,包括大型3D游戏,到时候,什么Windows,Linux,都是透明的了,只剩下一个Chrome Broswer,成为开发者的事实平台,得开发者得天下,Google就此一统江山,虽然不能千秋万代,但也能够衣食无忧上十年。

Web计算本地化的问题-安全性

由于web计算本地化是在本地执行服务器上下下来的代码,因此,服务器上要是发给用户的恶意代码,在本地执行的话,会出现严重的后果,因此,这些技术(包括JS,Java applet,Flash)的安全性非常重要。由于Flash应用最多,因此,Flash也被经常爆漏洞。

而对于Native Client技术,如何保证安全则是更大的挑战,为了保证安全,感觉这技术最好用于计算密集型应用,而尽量不让远程代码执行文件读写操作。为了保证文件读写的安全性,个人觉得有两个办法,一个是不读写本地文件,将文件直接写到云端的云存储(但是计算还是本地);另外一个就是在本地沙盒里面读写,不过这只适合临时数据,永久的还是要写到云端。

最后,附一张图,这张图反映了个人计算机应用平台的进化方向:

其他应用-----------Web应用

Sandbox--------Browser(Sandbox)

Web本地计算发展史相关推荐

  1. Web开发的发展史---Web开发技术的演变

    在接下来的几个月时间里,我打算写一系列关于完整web开发的文章.这第一篇文章虽然有所粗略,但也能够充分概括了在之前15年或者更久的时间里web应用程序如何进行演变.并且最后我会囊括下这段时间内所写的相 ...

  2. 64 位系统遇到未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0

    本人写的.net程序部署在windowsserver 2003的操作系统上正常,部署到windows server 2008上时候报错"未在本地计算机上注册 Microsoft.Jet.OL ...

  3. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法

    一.未在本地计算机上注册"microsoft.ACE.oledb.4.0"提供程序 http://download.microsoft.com/download/7/0/3/703 ...

  4. hualinux 1.25:Web开发技术发展史

    目录 一.web的诞生 二.动态内容的出现:CGI 三.Web编程脚本语言:PHP/ASP/JSP 四.分布式企业计算平台:J2EE/.Net 五.框架横飞的年代:MVC,ORM 六.回归Web本质: ...

  5. 【解决】mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

    最近写一个Java Web的项目,需要用到 mysql 数据库,在计算机管理中启动时,发现 mysql 报错:mysql本地计算机上的MySQL服务启动后停止.某些服务在未由其他服务或程序使用时将自动 ...

  6. 导入 Excel 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法

    错误提示:未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序. (System.Data) 解决办法: 去http://download.micros ...

  7. HTML5中web本地存储

    1.1.1 什么是html5web本地存储(web存储)? html5web本地存储可以在本地存储用户的浏览数据.web本地存储相对cookie更加安全和快速,它的数据不会保存在服务器上.它也可以存储 ...

  8. sq服务启动后又停止_“本地计算机上的SQL SERVER服务启动后又停止了”解决方法...

    本方法主要是解决SQL Server运行过程中出现的"本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的"解决方法. 笔者ASP运行环 ...

  9. 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序

    为什么80%的码农都做不了架构师?>>>    错误信息:未在本地计算机上注册"microsoft.ACE.oledb.12.0"提供程序. 解决办法: 立即下载 ...

最新文章

  1. hook情况下,解决内联没有:hover的方案
  2. STM32中关于RCC时钟的理解
  3. 吐血整理:Java线程池源码分析(基于JDK1.8建议收藏)
  4. Web应用架构-Full-text Search Service
  5. html编写edm时要注意的事
  6. Java继承结构中类的初始化
  7. 户外lisp导向牌如何安装_他山之石可攻玉,赴成都、重庆学习考察户外广告和门头牌匾规划管理工作...
  8. webstorm2019汉化详细教程,小白专用
  9. 有哪些令人骄傲的国产软件或应用?这5款你一定不知道!
  10. 原生js 实现小人吃豆豆小游戏
  11. win7怎么看计算机信息,如何查看Win7版本信息
  12. python葡萄酒数据集_葡萄酒数据集数据分析
  13. keras h5—darknet weights模型相互转换
  14. 计算机的同步操作与异步操作的概念,运城计算机同步与异步的概念和应用方法...
  15. 商务谈判Business Negotiation
  16. 如果我说熟悉SpringBoot 面试官会怎么问?
  17. 超星阅读器文件转为PDF文件
  18. 移动共享开发(二)各平台SSO(免登录)配置 微信和微信朋友圈、QQ、QQ空间、新浪微博、腾讯微博、人人
  19. 【51单片机】智能地磅控制系统设计
  20. Shell脚本运行中的停止方法

热门文章

  1. 推荐一个 angular 图像加载插件
  2. Nutch2.x+Hadoop 2.5.2+Hbase0.94.26(续2)
  3. bash的RANDOM变量生成的是真正的随机数吗
  4. C语言逗号运算符和逗号表达式
  5. urlrewrite 地址重写
  6. 如何使用ActionScript来检测用户的操作系统种类及浏览器类型
  7. vue项目实现按需加载的3种方式
  8. hystrix总结之多返回值命令
  9. 201521123052《Java程序设计》第7周学习总结
  10. 【转】Java类成员变量默认初始化规则