1.3 Web开发技术的发展
1991年,CERN(Conseil Europeen pour la Recherche Nucleaire,欧洲原子核研究委员会)正式发布了Web技术标准。1993年出现了第一个HTML浏览器,促进了Internet的革命性变化。从那时起,Web开发技术迅猛发展,各种新的技术层出不穷。
1.3.1 静态网页与动态网页
早期的Web网站以提供信息为主要功能,设计者事先将固定的文字及图片放入网页中,这些内容只能由人手工更新,这种类型的页面被称为“静态网页”。静态网页文件的扩展名通常为htm或html(前面介绍的例子就是静态网页)。
然而,随着应用的不断增强,网站需要与浏览者进行必要的交互,从而为浏览者提供更为个性化的服务。因此HTML 3.2提供了一些表现动态内容的标记,本书前面提到的<form>标签和其他一些表单控件标签就是此类标记。例如,<input></input>标签可以提供一个文本框或按钮。有了这些基本元素,Web服务器就能通过Web请求了解用户的输入操作,从而对此操作做出相应的响应。由于整个过程中页面的内容会随着操作的不同而变化,因此通常将这种交互式的网页称为“动态网页”。
HTML表单使得Web页面设计者可以编写标准的输入页面,但是,这些仍不足以使HTML具备足够的可编程能力,这种Web设计更像是一种平面设计技术,而不是程序设计技术,设计出来的页面只能呈现静态的文本和图像,无法满足用户需要的交互模式。因此,Web开发技术不可避免地向动态技术演化。
1.3.2 客户端动态技术
从理论上来说,Web架构是典型的分布式应用架构。Web应用中的每一次信息交换都涉及客户端和服务器端两个层面。因此,提供动态Web页内容的开发技术大体上也可以分为客户端技术和服务器端技术两大类。下面介绍客户端动态技术的发展。
在客户端模型中,附加在浏览器上的模块(如插件)完成创建动态页的全部工作。采用的主要技术如下。
(1)JavaScript:JavaScript是一种脚本语言,主要控制浏览器的行为和内容。它依赖于内置于浏览器中的被称为脚本引擎的模块。
(2)VBScript:与JavaScript类似,但仅IE支持。
(3)ActiveX控件:ActiveX控件是一个组件,用高级语言编写,可以嵌入网页并提供特殊的客户端功能,如计时器、条形图、数据库访问、客户端文件访问、网络功能等。ActiveX控件依赖于浏览器中安装的ActiveX插件,IE默认安装该插件,但Netscape需另外安装插件。
(4)Java小应用程序(JavaApplet):与ActiveX控件类似,比JavaScript的功能更强大,支持跨平台。JavaApplet依赖于浏览器中安装的Java虚拟机(Java Visual Machine , JVM)才能运行。
1.3.3 服务器端动态技术
每一个提供动态内容的服务器端技术,都依赖于添加到服务器(而不是客户端)的模块附件,这些模块在服务器中完成创建动态页的全部工作,然后才将结果转换为HTML传送回浏览器。常用的主要技术如下。
1.CGI
公共网关接口(Common Gateway Interface , CGI),是添加到WEB服务器的模块,提供了在服务器上创建脚本的机制。CGI允许用户调用Web服务器上的另一个程序(如Perl脚本)来创建动态Web页,且CGI的作用是将用户提供的数据传递给该程序进行处理,以创建动态Web应用程序。CGI可以运行于许多不同的平台(如UNIX等)。不过CGI存在不易编写、消耗服务器资源较多的缺点。
2.JSP
JSP页面(Java Server Pages),是一种允许用户将HTML或XML标记与Java代码相组合,从而动态生成Web页的技术。JSP允许Java程序利用Java平台的JavaBeans和Java库,运行速度比ASP快,具有跨平台特性。已有允许用户在IIS服务器中使用JSP的插件模块。
3.PHP
该技术是指PHP超文本预处理程序(Hyper Text Processor)。它起源于个人主页(Personal Home Pages),使用一种创建动态Web页的脚本语言,语法类似C和Perl语言。PHP是开放源代码和跨平台的,可以在Windows NT和UNIX上运行。PHP的安装较复杂,会话管理功能不足。
4.ASP
动态服务器页面(Active Server Pages , ASP),是Web服务器上的模块(asp.dll文件)。它允许使用VBScript和JavaScript脚本语言编程,在服务器端使用Windows提供的任何功能,如数据库存取、E-mail收发、网络功能、文件处理、图形处理、系统功能等。但它只能在Windows平台上运行。
5.ASP.NET
ASP.NET是一种基于.NET框架开发动态网页的新技术,它依赖于Web服务器上的ASP.NET模块(aspnet isapi.dll文件),但该模块本身并不处理所有工作,它将一些工作传递给.NET框架进行处理。它允许使用多种面向对象语言编程,如VB.NET、C#、C++、Jscript.NET和J#.NET语言等。