| 摘要: 分析了基于B/S模式三层结构的数据库访问技术,主要介绍了几种方法——通用网关接口CGI,ASP(Active Server Pages),JSP(Java Server Pages),PHP(Professional Hyperiexl)。
关键词:B/S模式,WEB数据库,CGI,ASP,JSP,PHP
近年来 ,计算机网络技术的不断发展 ,特别是Internet的发展 ,对数据库应用技术产生了巨大的影响。Internet的主要组元Web服务器和数据库服务器,尽管均可用来提供信息服务,但在具体实现时各具特色。对Web服务器而言,虽其信息量大,但难以提供有效的信息管理,而数据库服务器虽可提供有效的信息管理,但又显得信息表现的灵活性不够。这就出现了一种新的数据库访问方式——基于基于B/S模式三层结构的数据库访问技术。这种数据库访问方式要求采用Web方式、实时动态交互等形式,将应用逻辑集中到服务器端,客户端用户则无需进行应用程序的开发和增加额外的软件配置,从而充分体现Web数据库访问技术的优越性:使用方便、操作简单、易于维护和防护安全。目前该技术的实现方法有多种,本文主要讨论几种比较通用的方法:CGI,ASP,JSP,PHP,并就这几种方法的特点进行介绍1、B/S模式三层体系结构概述
B/S(Browser/Server)模式是指在TCP/IP的支持下,以HTTP为传输协议,客户端通过Browser访问WEB服务器以及与之相连的后台数据库的技术及体系结构。它由浏览器、WEB服务器、应用服务器、数据库服务器所组成。B/S模式突破了传统的文件共享及C/S模式的限制,实现了更大程度的信息共享。
WEB浏览器 WEB服务器 应用服务器 数据库服务器 HTTP请求 HTML页面 SQL请求 结果 客户层 应用层 数据层 B/S模式的工作原理(见上图)是:客户层的浏览器通过URL访问应用层的WEB服务器,WEB服务器通过应用服务器请求数据库服务器,并将获得结果以HTML形式返回给客户浏览。
B/S模式具有以下优点:
1、用户操作、使用方便
用户只要使用单一的浏览器,就可以访问网络上的文本、图象、声音、数据库,不需其他专业的知识;
2、维护简单、易于升级
客户端不需安装任何其他专门的软件,当系统需要变动时,只需修改应用服务器,客户端不做任何修改,给系统管理带来了极大的方便,大大降低了系统维护与升级的成本和工作量;
3、安全性好
使用防火墙技术可以保证子系统不受外部入侵,也可阻挡子系统对外部的方法操作。
2、几种WEB数据库访问方法简介
(1) CGI方法
CGI(CommonGatewayInterface)即公共网关接口,该接口是Web服务器与其它数据库服务器相互作用的一个接口协议规范,由一套标准的参数格式和环境变量给予支持。CGI程序的主要作用在于扩展Web服务器的功能,实现Web服务器与数据库服务器的连接,同时和浏览器进行交互作用。如一个CGI程序可从某数据库服务器中获取数据,转换成HTML文档后发送给浏览器,也可将由浏览器获得的数据存储到数据库服务器中。这样客户端用户就可以方便地和Web服务器进行交互,实现数据处理。CGI程序可以用任何语言编写,通常有C、Perl、C++、Java、VB等。CGI方法访问数据库服务器的机制如下图所示
客户机 浏览器 WEB服务器 HTTP
CGI
程序 数据库
服务器 1) 6) 2) 3) 4) 5) 其具体过程为:
1) 客户机使用TCP/IP协议以端口80与Web服务器建立连接并发送请求;
2) Web服务器对若干环境变量赋值,然后运行CGI程序,把从客户收到的请求体中的信息传送给CGI程序;
3) CGI程序向数据库服务器提出请求;
4) 数据库服务器返回请求结果给CGI程序;
5) CGI程序返回处理结果给Web服务器;
6) Web服务器返回结果给客户机并断开连接。
CGI性能分析:
CGI几乎可以用任何程序设计语言编写,而且几乎所有的WEB服务器均支持CGI,因此,CGI对WEB服务器通用性较好。但CGI程序也有一些缺点:
1)运行速度慢
因为CGI作为WEB服务器的外部程序,它和WEB服务器之间的通信属于进程间的通信,每当客户产生HTTP请求,都要在服务器中启动一个CGI进程,分配新的资源,开销很大。当用户流量增加时,WEB服务器性能急剧下降。
2)访问数据库效率低
这是由于每次访问数据库都要先建立一个连接,用完后立即拆除连接,即使WEB服务器在此之前曾多次访问过这个数据库,也要重新访问;
3)可移植性差
我们必须针对不同的数据库服务器开发不同的CGI程序。
2 ASP方法ASP(ActiveServerPages)是Microsoft公司提供的一种开放的、且可将HTML和脚本以及可重用的ActiveServer组件结合在一起的动态页面构造技术,以用于建立高效、动态、基于Web服务器的数据库应用程序访问环境。ASP采用将Script嵌入HTML文本的方式,把动态部分有机地融入静态的页面之中,同时采用面向对象的特征以及对ActiveX控件的扩展,可实现对Web数据库的动态访问。ASP对数据库的访问采用ADO(ActiveDataObjects)方式,即通过建立对象把访问数据库的细节高度抽象。ADO本身具有高速、简便以及低内存开销的特点。其访问机制如下图所示:
客户机 浏览器 WEB服务器 ADO
ODBC 数据库
服务器 ASP方法的核心ADO中包括7个对象,分别是:
Command定义对数据库进行操作的命令
Connection表示建立一个数据源的连接
Err提供数据访问错误的信息
Field表示一般数据类型的字段
Parameter表示Command对象的参数
Property表示由数据提供源定义的ADO对象的动态特性
Recordset表示由数据库命令产生的全部结果集
七个对象中Recordset是数据的主要接口。
ASP的特点:
1、ASP脚本集成于HTML中,容易生成,页面的开发与HTML完全一致,用普通的编辑器即可。无须编译和连接即可直接解释执行。
2、独立于浏览器。用户端只要使用可解释常规HTML代码的浏览器,即可浏览ASP所设计的主页内容。ASP脚本是在站点服务器端执行的,用户端的浏览器不需要支持它。
3、面向对象,可以扩展ActiveXServer构件。在ASP脚本中可以方便地引用系统组件和ASP的内置组件,并能通过定制ActiveX服务器组件来扩充功能。
4、与任何ActiveXScript语言兼容。ASP的文件后缀名为.asp,以区别同样可以包含Script的HTML文件。
5、源程序码不会外漏。ASP脚本在服务器上执行,传到用户浏览器的只是ASP执行结果所生成的常规HTML代码,这样源程序不易被盗取。
3、JSP方法
JSP是由Sun公司推出的非常类似与ASP的一种动态网页技术标准。它也提供了在HTML代码中混合程序代码,由语言引擎进行解释执行的能力。不同的是,ASP用的是Vbscript、JScript等之类的脚本语言,而JSP使用的是成熟强大的JAVA代码。客户端请求JSP编写的页面时,代码首先被转换成JAVA源文件,再编译成支持HTTP、FTP等网络协议的class文件(即Servlet),并由JAVA虚拟机执行。这种编译操作仅在对JSP页面的第一次请求时发生,虽然首次调用需几秒的编译加载时间,但后续请求只需调用服务器端缓存中的Servlets就可以了,比起每次请求都要解释执行的ASP代码要快。
综合来讲,JSP的优势表现在以下几方面:
(1)JSP技术是基于平台和服务器独立的。
它广泛吸收和接纳了各种工具包、服务器组件和数据库开发商提供的产品,可以运行于IIS、Apache、Netscape等各种Web服务器,支持Solaris、Windows、MACOS、Unix、Linux等绝大多数操作系统平台。
(2)JSP内置支持XML技术,使得开发者能够定制自己的标签,因而大大减少了对脚本语言的依赖和编程工作量。(而ASP尚不支持自定义标签)。
(3)JSP突出的组件技术(包括JavaBean、EJB、定制的JSP标签)使JSP具有跨平台可重用性,大大加速了总体开发进程。
(4)JSP对数据库的访问主要通过JDBC(JavaDataBaseConnectivity)来实现的。对于只支持ODBC的数据库,可以通过JDBC ODBCBridge来实现访问。这也就意味着JSP可以比ASP(只支持ODBC数据库)访问更多类型的数据库。
5)安全性更高
JSP在执行前要编译成字节码,再由JAVA虚拟机执,源码相对不易被下载,尤其在用了JavaBean之后,安全性更高。此外,JAVA语言还能够有效地防止系统崩溃,提供防止内存泄露的方法,JSP自身也有强大的意外事件处理机制。
4、PHP方法
PHP全称 是一种跨平台的服务器端脚本技术。
它最重要的特点,就是具有十分强大的数据库操作功能,可直接连接多种数据库,并完全支持ODBC。这一特点是其他脚本语言所不能比拟的。
PHP是GNU标准的自由软件。不仅它是免费的,与其配合使用最佳的ApacheServer、MySQL数据库也都是免费的。源码的公开使它迅速崛起,广泛支持dBase、SQLServer、Oracle、Sybase、Informix、MySQL等数据库,而且完全支持ODBC。PHP还具有跨平台性,在Window98、NT、Linux、Unix和Macintosh等环境下均能运行,而且代码可以重用。由于采用类似C和perl的语言格式,PHP含有相当丰富的函数库,上载文件、存取数据库中的二进制图片数据、作图、XML解析等功能的实现,只需借助某个或某几个函数即可完成,而不像ASP那样需要引入专门的控件才可实现。PHP也有其不足。相对ASP来说,PHP的自由软件身份使得自身的发展得不到颇具实力的软件开发公司的支持,其发展具有不定性,相应的参考材料、技术支持也较匮乏。它的类似C的语言风格,使它不如ASP来得容易掌握。此外,PHP提供的数据库接口函数也不统一,在访问数据库时不如ASP那么方便 |