首页 理论教育 Web开发技术发展历程:开源WebGIS设计与开发教程

Web开发技术发展历程:开源WebGIS设计与开发教程

时间:2023-08-24 理论教育 版权反馈
【摘要】:而且CGI不具有升级性,如当访问Web应用程序的人数增加时,CGI不能自我调整处理负载。2000年随之而来的.NET平台,其ASP.NET构件化的Web开发方式以及Visual Studio中.NET开发环境的强大支持大大降低了开发企业应用的复杂度。图1-2AJAX工作原理5.MVC框架为了在架构层面上解决维护性和扩展性问题,MVC的概念被引入Web开发过程中。

Web开发技术发展历程:开源WebGIS设计与开发教程

1.CGI

在Web1.0时代,浏览器只能向服务器请求静态HTML信息,浏览器中展现的是静态的文本或图像信息。CGI(Common Gateway Interface):通用网关接口出现于1993年,其定义了Web服务器与外部应用程序之间的通信接口标准。CGI的意义是使Web服务器可以执行外部程序,让外部程序根据Web请求内容生成相对应的动态的内容。CGI可以用任何支持标准输入输出和环境变量且符合接口标准的语言编写,如C、C++。CGI分为标准CGI和间接CGI两种,标准CGI使用命令行参数或环境变量表示服务器的详细请求,服务器与浏览器通信采用标准输入输出方式。间接CGI又称缓冲CGI,在CGI程序和CGI接口之间插入一个缓冲程序,缓冲程序与CGI接口间用标准输入输出进行通信。绝大多数CGI程序用于解释处理来自表单的输入信息,并在服务器产生相应的处理或将相应的信息反馈给浏览器,CGI程序使网页具有交互功能。CGI程序和Web浏览器的信息交流过程是首先通过Internet将用户请求送到Web服务器,服务器在接收到CGI请求时会调用相关CGI程序,并通过环境变量和标准输出将数据传递给CGI程序,在CGI程序处理完数据并生成HTML后,再通过标准输出将内容返回给服务器,同时服务器将内容交给用户,最后CGI程序退出。它们的通信方式如图1-1所示。

图1-1 CGI通信方式

在这个信息交流过程中,服务器的标准输出对应CGI程序的标准输入,CGI程序的标准输出对应服务器的标准输入,相当于利用两条管道建立了进程间的通信。CGI的优点在于能够让浏览器与服务器进行交互,易于使用,而且使在网络服务器下运行外部应用程序成为可能。尽管程序易于使用,但是其缺点也无法忽视。当多用户同时使用一个CGI程序时反应会变慢,网络服务器速度也会受到明显影响。而且CGI不具有升级性,如当访问Web应用程序的人数增加时,CGI不能自我调整处理负载。

2.Web编程脚本语言:PHP/ASP/JSP

CGI对每个用户请求都会启动一个进程来处理,因此性能上的扩展性并不高。

为了处理更复杂的应用,在1994年PHP诞生了。PHP(Hypertext Preprocessor)可以将程序(动态内容)嵌入HTML中执行,不仅能更好地组织Web应用的内容,而且执行效率比CGI高。PHP还可以执行编译后的代码,使用这种方式可以达到加密和优化代码运行的目的,让代码运行得更快。正因为PHP不仅有着与其他同类脚本所共有的功能,而且还有其自身的特色,所以它在诞生后不断发展。总的来说,PHP的特点可以概括如下:完全免费、代码开放、语法结构简单、功能强大、支持多种数据库、代码执行效率高,除此之外,PHP还支持跨平台运行。在此之后,于1996年出现的ASP和1998年出现的JSP本质上也都可以看成一种支持某种脚本语言编程的模板引擎。

ASP(Active Server Pages)是MicroSoft公司开发的服务器端脚本编写环境,可以由IIS(Internet Information Services)程序管理发布。ASP结合HTML代码,即可快速完成网站的应用程序,实现动态网页技术。ASP文件包含在HTML代码所组成的文件中,易于修改和测试,无需编译或链接就可以解释执行。当然由于ASP只能应用在Windows平台,这在一定程度上限制了ASP的广泛使用。

JSP(Java Server Pages)技术与ASP技术有点类似,它是在传统的网页HTML文件中插入Java程序段和JSP标记,从而形成JSP文件。与ASP不同的是,用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

3.分布式企业计算平台:J2EE/.NET

模板Web开始用于广泛构建大型应用时,在分布式、安全性、事务性等方面的要求催生了J2EE(现在已更名为Java EE)平台于1999年诞生。J2EE是使用Java技术开发企业级应用的工业标准,它提供了基于组件的方式来设计、开发、组装和部署企业级应用。适用于企业级应用的J2EE可以提供一个独立的、可移植的、多用户的、安全的和基于标准的企业级平台。

2000年随之而来的.NET平台,其ASP.NET构件化的Web开发方式以及Visual Studio中.NET开发环境的强大支持大大降低了开发企业应用的复杂度。ASP.NET第一次让程序员可以像拖拽组件创建Windows Form程序那样来组件化地创建Web页面。ASP.NET借鉴了Java技术的优点,使用C#语言作为ASP.NET的推荐语言,同时改进了以前ASP的安全性差等缺点。前文曾提到由于ASP只能在Windows平台运行的缺点限制了其广泛应用。虽然目前微软提供了在Unix/Linux上运行ASP的解决方案,但是目前非Windows系统使用ASP程序的应用依然比较少。

4.AJAX

AJAX即Asynchronous JavaScript and XML(异步JavaScript与XML技术),是一套综合了多项技术的浏览器网页开发技术,可以基于JavaScript的XMLHTTPRequest用于创建交互性更强的Web应用。AJAX允许客户端的JS脚本为局部页面提供请求服务,然后可以在无需回到服务器的情况下动态刷新部分页面(图1-2)。这样可以减少与服务器的数据量交换,减轻服务器压力,同时使得网页的访问速度变快,网页界面的使用体验大幅度改善,更贴近于Windows Form的应用程序。随着AJAX技术的成熟,一些AJAX使用方法的库也陆续问世。(www.xing528.com)

图1-2 AJAX工作原理

5.MVC框架

为了在架构层面上解决维护性和扩展性问题,MVC的概念被引入Web开发过程中。MVC是Model(模型)、View(视图)、Controller(控制器)的缩写。

模型表示用于数据和业务规则,用于封装与业务逻辑相关的数据和数据处理方法。模型层是真正用来实现各项功能的模块,负责处理业务逻辑和业务规则,如对数据库的增删改查、动态生成页面等交互功能。

视图能够实现数据有目的地展现,在视图层一般没有程序上的逻辑实现。可以理解为视图层就是用户直接看到的Web应用程序界面,它为用户提供了一个可视化的界面和操作空间,也是用户与Web应用进行直接交互的渠道。视图层使得MVC架构的Web应用功能更加强大、丰富。

控制器负责对不同层面之间的协调组织,用于控制应用程序的流程。总的来说,控制器层一方面解释客户端界面的输入,调用Model(模型)中的方法,另一方面通过将模型数据和执行的结果反馈给视图,进而将视图显示给用户。当接收到用户的请求时,控制器只负责决定调用哪些Model和View去处理和返回执行结果,但是控制器本身不会有任何输入和输出。这样将Model和View的实现代码分离,耦合性更低,同一个程序可以使用不同的表现形式,不仅使代码复用性和组织性更好,还使Web应用的配置性和灵活性更好,可维护性更高,有利于软件工程化管理。

当然MVC也有一些缺点。MVC的设计原理相对复杂(图1-3),需要开发者有相当的经验并花费时间去思考。所以当Web应用程序十分简单时,如果再遵循MVC框架进行开发,就会导致原本简单的系统变得复杂而冗余,并降低系统的运行效率,所以它通常不适用于中小型的应用程序。

图1-3 MVC框架

6.Node.js

Node.js是一个JavaScript运行环境,是在Google V8引擎上加以网络、文件系统等内置模块封装而来,它是一个能让JavaScript运行在服务端的开发平台。Node.js主要应用于Http Web服务器的搭建和快速实现的独立服务器。在实践中,Node.js更适用于一些小型系统服务器或者大型项目的部分功能的实现。

Node.js借助JavaScript特有的事件驱动机制和Google V8高性能引擎,使得编写高性能Web服务器更加轻而易举。因为它完全构建在事件驱动、非阻塞的编程模型上,所以它不会出现传统模式中的线程阻塞,同时Node.js本身是支持同步编程的,可以满足不同场景下的需求。

随着Node.js的流行,一种新的开发模式也因此兴起:浏览器端处理视图层逻辑,服务端Controller这一层以及相关的模板渲染、路由、数据接口以及Session/Cookie相关处理由Node.js实现。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈