CGI(Common Gateway Interface)的出现使得Web上的动态信息服务开始蓬勃兴起。CGI定义了Web服务器与外部应用程序之间的通信接口标准,因此Web服务器可以通过CGI执行外部程序,让外部程序根据Web请求内容生成动态的内容。
CGI对每个请求都会启动一个进程来处理,如网站访问的计数,因此性能上的扩展性不高。为了处理更复杂的应用,起初是把HTML返回中固定的部分存起来(称为模版),把动态的部分标记出来,Web请求处理的时候,程序先生成动态的内容,再把模版读入进来,把动态内容填充进去,形成最终返回。但是这样做显然太繁琐且重复,于是PHP诞生了,PHP可以把程序(动态内容)嵌入到HTML(模版)中去执行,不仅能更好的组织Web应用的内容,而且执行效率比CGI还更高。之后出现的ASP和JSP本质上也都可以看成是一种支持某种脚本语言编程(分别是VB和Java)的模版引擎。CSS允许开发者用外联的样式表来取代难以维护的内嵌样式,而不需要逐个去修改HTML元素,这让HTML页面更加容易创建和维护。此时,有了这些脚本语言,搭配上后端的数据库技术,Web真正变为了一个分布式的计算平台。引入Web编程脚本语言后的流程如图所示。
Web开始广泛用于构建大型应用时,在安全性、事务性等方面的要求催生了Java EE(原名为J2EE)平台的诞生,从那时开始为企业应用提供支撑平台的各种应用服务器也开始大行其道。Java Servlet、Java Server Pages(JSP)和Enterprise Java Bean(EJB)是Java EE中的核心规范,Servlet和JSP是运行在服务器端的Web组件,EJB是运行在服务器端的业务组件,是一种分布式组件技术。而之后的.net平台,其ASP.net构件化的Web开发方式以及Visual Stidio.net开发环境的强大支持,大大降低了开发企业应用的复杂度。ASP.Net第一次让程序员可以像拖拽组件来创建Windows Form程序那样来组件化地创建Web页面。.net流程如图所示。
Web开始广泛用于构建大型应用时,在安全性、事务性等方面的要求催生了Java EE(原名为J2EE)平台的诞生,从那时开始为企业应用提供支撑平台的各种应用服务器也开始大行其道。Java Servlet、Java Server Pages(JSP)和Enterprise Java Bean(EJB)是Java EE中的核心规范,Servlet和JSP是运行在服务器端的Web组件,EJB是运行在服务器端的业务组件,是一种分布式组件技术。而之后的.net平台,其ASP.net构件化的Web开发方式以及Visual Stidio.net开发环境的强大支持,大大降低了开发企业应用的复杂度。ASP.Net第一次让程序员可以像拖拽组件来创建Windows Form程序那样来组件化地创建Web页面。.net流程如图所示。
虽然脚本语言大大提高了应用开发效率,但是试想一个复杂的大型Web应用,访问各种功能的URL地址纷繁复杂,涉及到的Web页面多种多样,同时还管理着大量的后台数据,因此我们需要在架构层面上解决维护性和扩展性等问题。这时MVC(Model,View,Controller)被应用到Web应用上,模型Model用于封装与业务逻辑相关的数据和数据处理方法,视图View是数据的HTML展现,控制器Controller负责响应请求,协调Model和View。Model,View和Controller的分开,是一种典型的模块化思想,不仅使得代码复用性和组织性更好,使得Web应用的配置性和灵活性更好。MVC框架如图所示。
此外,数据访问也逐渐通过面向对象的方式来替代直接的SQL访问,出现了ORM(Object Relation Mapping)的概念,Hibernate就是其中的佼佼者,已经成为Java持久层的规范JPA的主要参考和实现。之后更多的全栈框架开始出现,如Spring,同时更多的动态语言也被加入到Web编程语言的阵营中,Ruby开发框架Rails,Python开发框架Django。
Web开发涉及浏览器端和服务器端。在客户端JavaScript被用作浏览器上运行脚本语言为网页增加动态性。JavaScript可以响应浏览器端的用户事件,检测表单的正确性,动态修改HTML页面结构DOM,因此可以减少与服务器端的通信开销,并且做出很精彩的页面动态效果。这使得JavaScript大放异彩。
AJAX(Asynchronous JavaScript and XML,异步的JavaScript与XML技术)是一套综合了多项技术的浏览器端网页开发技术,可以基于JavaScript的XmlHttpRequest的用于创建交互性更强的Web应用。AJAX是一种已有技术的mashup,多种技术组合在一起形成了其特色和优势。AJAX应用仅向服务器发送并取回必须的数据,并在客户端采用JavaScript处理来自服务器响应,更新页面的局部信息。这样不仅浏览器和服务器的数据交换大大减少,而且客户端也可以更加快速地响应用户操作。AJAX框架如图所示。
AJAX以及如EXTJS、DOJO等一些前端开发框架的出现,也使得单页应用(Single Page Application)流行起来。这种模式下,前后端的分工非常清晰,前后端的关键协作点是AJAX接口,规定好交互接口后,前后端工程师就可以根据约定,分头开工,开发环境中通过Mock等方式进行测试,同时在特定时间节点进行前后端集成测试。
附图:TIOBE 指数2021年12月编程语言排行
留言