【学习笔记】web应用架构的演变

从实用角度,当需要架构web应用时,往往我们随大流的去选择最主流的框架就可以了,这些框架的设计越来越高级,越来越容易上手。然而,若想更深刻的理解我们开发的项目,我们必须了解本源,这样才能站稳脚跟、看得更远。本文的目的是简单的梳理web应用架构的演变,如有错误请不吝指教。

主要参考:

1.https://www.youtube.com/watch?v=7ujN5hwhfrs

2.http://thinkinghub.org/?p=115

 

阶段0:C/S时期

在互联网技术的拓荒期,人们对网络的应用还停留在client和server点对点通信的阶段,众多的底层基础协议在这个阶段被提出。

阶段1:简单浏览器时期

web时代的开始,是浏览器、html语言成形的时期。这时的服务器的功能仅仅是支持http协议,将html文件存储,以便浏览器进行访问;期初的浏览器能做的,也只是解释html语言,形成静态页面。这种浏览器与服务器之间的通信,就是B/S模式。

阶段2:简单服务器时期

单纯的静态页面能做到的事实在太少,人们开始追求动态,这就意味着需要有程序来响应用户的操作。这一功能的实现,便是CGI(Common Gateway Interface)。CGI技术使得服务器可以调用外部程序,可以将用户的html请求输入给外部程序,并将结果返回到html页面上。无论是这时期出现的Perl还是传统的C++,程序本身的编写并没有发生变化,仅仅是服务器的功能得到了简单的扩展。

阶段3:复杂浏览器时期

在90年代后期,由于各种原因(主要是安全问题),很多web应用不允许使用javascript,这大大的影响了其动态交互功能。而java applets的出现解决了这一问题。无论applets、flash、或是后来的silverlight,其本质都是在浏览器端运行的小程序。这相当于是把动态程序从后端转移到了前端,后端服务器仍是相对简单的功能,却增长了架构的复杂度。彼时一种流行的架构是,前端applets程序连接后端applet服务器,再通过服务器连接数据库。

阶段4:复杂服务器时期

applet毕竟不是一种通用的标准,自身同样存在着安全问题,且复杂的功能会考验浏览器的性能,因此开发人员试图把压力转移到后端。这一时期前端更像是后端的附属,耦合相对较紧密,Servlets、JSP、ASP、PHP等技术纷纷出现和成熟,其中最重要的便是J2EE,即java 1.2 enterprise edition。J2EE规范把大量的底层支撑功能从业务实现层剥离到容器实现层,对程序员十分友好,一时间成为web应用架构的王者。

阶段5:后J2EE时期

复杂服务器的模式证明了它的强大,但是J2EE的EJB体系太过复杂,人们开始花心思在改进服务器端的架构上,创造更友好的框架。这其中影响力最大的,是2002年出现的Spring和2005年出现的Ruby on Rails。这个阶段的开发框架大都遵循着“约定大于配置”的简单观念,遵循简单的Model-View-Controller架构,一个命令就可以产生良好的应用主体代码框架,然后再遵循着框架约定,填入业务代码。

阶段6:js时期

javascript的入侵是循序渐进和革命性的,它提供了web应用轻量级、前后端松耦合的可能性。

2005年,Google在它众多的应用中使用了ajax来完成异步通信。2006年,微软提出了异步请求的概念,并将它加入了IE7中,这便是XMLHttpRequest。同年,jquery也成功发布。这一时期,浏览器的功能变得强大,人们可以使用javascript以更简单的方式实现更多的功能,开发也慢慢从后端转移回了前端。2007年,ExtJS发布,人们可以用开发传统桌面程序的方式来开发web应用了。

2009年,node.js发布,其本质是对chrome V8引擎进行了封装,是一个事件驱动的js运行时。基于此,人们可以脱离浏览器运行javascript,javascript可以作为web应用的后端开发语言,而其本身的特性支持了大流量的并发性访问,更适合这个时代。

总结

尽管js目前大行其道,但Spring等稍年长一些的主流框架也仍在不断更新改进,同时还有新晋的html5正准备施展拳脚,web应用架构的下一个阶段会是什么呢?我们一起学习,一起关注。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值