论文部分内容阅读
摘 要:当今Web应用系统与数据库系统连接方案可分为两大类:一是服务器端数据库连接;另一种是客户端数据库连接。
关键词:WEB服务器 B/S ODBC CGI Web API ADO JDBC OBJECT WEB
B/S软件的根本点就是以浏览器形式与用户打交道,其软件设计的重要内容是客户端访问数据库的方法。基于Web的数据库访问技术是指:在客户端安装Web浏览器,作为用户输入查询条件和显示查询结果的交互界面。用户可以通过填写表格或输入关键字的方式来与WWW进行交互,当用户单击表格上的按钮时,表格中的数据便发送到Web服务器。Web服务器介于Web浏览器与数据库服务器之间,负责用户输入信息的接收。服务器将数据传送至要被处理的脚本或应用程序,并在数据库中查询数据或将数据传递到数据库中。最后,服务器将返回结果插入到HTML页面,传送至客户端以响应用户。这种交互性提高了用户参与的积极性。
一、CGI访问模式
CGI是外部应用程序与Web服务器交互的一个标准接口。CGI应用程序可以完成客户端与服务器的交互操作。遵循CGI标准编写的服务器端的可执行程序称为CGI程序。按照CGI标准编写的外部扩展应用程序可以处理客户端输入的协同工作数据,完成客户端与服务器的交互操作,这在实际应用中非常有用,如可以编写CGI外部扩展程序来访问外部数据库,客户端用户可以通过它和WWW服务器来进行数据查询。CGI一般分两种:标准CGI和缓冲CGI。所有的WWW服务器均应支持标准CGI,按标准CGI编写的程序与具体的WWW服务器无关。而按缓冲CGI编写的程序与WWW服务器有关。采用CGI访问数据数据库结构如图1所示:
各种API均与其相应的Web服务器紧密联系在一起。为了解决复杂与高效之间的矛盾,Netscape与Microsoft均为各自的Web服务器提供了基于API的高级编程接口。Netscape提供的是LiveWire,而Microsoft则提供的是IDC。
基于API的用户应用可实现CGI的全部功能,其作用与CGI类似,也是为了扩展WEB服务器的功能。但其运行机制与CGI不同,API应用以线程方式运行。API方式工作原理是:在服务器起动时,WEB服务器设置提供了指向这些API应用的通用接口,在首次被请求时,API应用被调入内存,执行完毕后,并不马上消失,而是继续驻留在内存中,与WEB服务器处于同一地址空间,当下一次被请求时,WEB服务器只是运行驻留在内存中的相应的API应用,这样就避免了CGI程序每次请求都要重新启动进程相当耗时的进程间的通信及与数据库的连接,并且,可在一个API应用里设置多个用户请求处理函数。因此,系统运行效率以及速度比CGI快得多。
采用Web API结构的优点:API应用程序是与Web服务器软件处于同一地址空间的DLL,因此所有的HTTP服务器进程能够直接利用各种资源,这显然比调用不在同一地址空间的CGI程序所占用的系统时间要短,比CGI具有更高执行效率,客户端响应时间也较短。其缺点:(1)可移植性差:由于各个Web服务器厂商纷纷推出自己的API,使得各种API之间的兼容性很差,开发API程序需要多线程、进程同步、直接协议编程等知识,其程序开发比CGI开发更困难。(2)此外健壮性也不好保证,这是由于API进行与Web服务器处于同一系统空间,服务器端一个违规操作有可能导致整个Web服务器的崩溃。
三、 ADO方式
ADO(ActiveX Data Object即ActiveX数据对象)是Microsoft在OLE DB标准的基础上定义的一种面向对象、与语言无关的数据库应用编程接口。如果选用ADO作为访问Web数据库接口,则最好方法是结合ASP来写应用程序。ASP是微软公司基于ActiveX技术的一个Web服务器端的开发和运行环境,只能运行在微软提供的平台如Windows NT和IIS等。ASP属于服务器端技术,直接建立在服务器中,并且作为Web服务器的一个服务运行,支持多用户、多线程;与其它常见的Client端实现动态性的技术如Java Applet。 ActiveX Control。JavaScript等不同,一个ASP页面即可包含客户端脚本,更主要的是也可包含服务器端脚本,引擎解释执行,执行结果以HTML的形式返回给用户。
采用ADO结合ASP访问数据库系统有如下优点:(1)与HTML完全结合,可以使用任何脚本语言,易于开发,易于维护:(2)所有服务器端脚本代码均在服务端执行,有效地保护了开发者的知识产权,且支持任何一种浏览器;(3)面向对象,可充分利用现存的ActiveX组件,易于扩展Server端功能;(4)可以访问非关系数据库,这是其它方式无法实现的。
ADO方式明显的缺点是:仅适用于微软提供的一些平台,且ASP程序是解释型语言编写的,运行速度相对较慢。
四、ODBC/JDBC数据库连接模式
采用ODBC/JDBC的连接模式,基本结构如图3所示。ODBC是一个中间件,它把一个应用的数据请求转换为DBMS可以理解的命令。JDBC是JAVASOFT公司的规范,它建立了一个程序级的设计接口,在统一方式下与数据库通迅,类似于ODBC概念。JDBC标准基于X/OPEN SQL调用级接口,与ODBC具有相同的基础。Oracle与Sybase数据库均支持ODBC/JDBC。
API方法与Web服务器结合紧密,所以性能较高。但是利用底层的API开发数据库访问程序仍然很困难,因此一般使用基于底层API的高层数据库编程接口,这就是我们所说的ODBC。ODBC是“开放数据库互连”的简称,是一种使用SQL的应用程序接口(API) 。ODBC一个最显著的优点是用它生成的程序与数据库或数据库引擎是无关的。ODBC可使程序员方便地编写访问各种DBMS厂商的数据库的应用程序,而不需了解其产品的细节。Web服务器通过数据库驱动程序ODBC向数据库服务器发出SQL请求,数据库服务器接到的是标准的SQL查询语句,数据管理系统执行SQL查询并将查询结果再通过ODBC传回Web服务器。许多服务器扩展程序使用包含ODBC层的系统结构。ODBC是为调用关系数据库提供统一途径的一类API,由于它适用于许多不同的数据库产品,因此是服务器扩展程序开发者们理所当然的选择。
Java语言显示出优于以往编程语言的诸多特色,赢得了众多数据库厂商的支持。为了同时连接到多个数据库进行并行的联合查询,可以充分利用Java语言本身的特色。
在数据库处理方面,Java提供了JDBC(Java数据库连接:Java Database Connectivity),为数据库开发应用提供了标准的应用程序编程接口。与ODBC类似,JDBC也是一种特殊的API,是用于执行SQL语句的Java应用程序接口(JavaAPI),它规定了Java如何与数据库进行交互作用。JDBC由一组用Java语言写的类和接口组成,利用Java机制设计的标准SQL数据库连接接口JDBC去访问数据库。JDBC也是一种规范,其宗旨是让各数据库开发商为Java程序员提供标准的数据库访问类和接口。JDBC与Java结合,使用户很容易地把SQL语句传送到任何关系数据库中,程序员用它编写的数据库应用软件,可在各种数据库系统上运行。采用JDBC可以很容易用SQL语句访问任何商用数据库,采用Java和JDBC编写的数据库应用程序具有与平台无关的特性,很容易用SQL语句访问任何商用数据库,而不必为每一种数据库平台编写不同的程序。
JDBC访问数据库的过程可采用两种方式。一种是通过浏览器连接到Web服务器上,下载含有Java小程序的HTML页,Java小程序在客户端运行,使用JDBC接口,绕过Web服务器,直接与数据库服务器交互,并直接把查询结果的HTML页返回到浏览器。另一种方式则是在WEB服务器端通过JAVA SERVERLETS与数据库服务器交互。
五、几种数据库连接方式的比较
CGI根据浏览器端的http请求激活相应进程,每一个请求对应一个进程。当同时有很多请求时,程序挤占系统资源,造成效率低下。Web API针对这一缺点进行改进,利用DLL(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。这两种技术还存在另外一个问题,那就是开发困难。程序的开发和HTML写作是两个完全不同的过程,需要专门的程序员开发。而另一些较简单的开发技术如JavaScript和IDC(Internet DatabaseConnector)等功能有限。
Microsoft的ODBC API是使用最广泛的访问数据库规范。ODBC2.0 访问数据库时存在同步与异步执行模式之分,如果设计不当,则易发生系统故障甚至系统死锁。但是同步执行模式可以简化程序编制的复杂性。程序员不用过多地了解较复杂的ODBC 2.0 API的使用,而只需使用ODBC的同步执行模式或使用数据控制项和数据库对象变量来编写应用程序,可以提高开发效率,但程序运行速度比不上异步执行模式的速度。
JDBC保持了ODBC的基本特性。两者都基于X/Open SQL调用级接口(CLI:CallLevelInterface)标准。它们的不同就在于JDBC建立在Java语言基础上,并充分利用了其特色,易于使用;ODBC使用的是C界面,C语言大量使用了Java语言中没有的指针功能,不适于以Java为界面的JDBC直接使用。同时,JDBC确保了“100%纯Java”的解决方案。这样,JDBC应用无需像ODBC应用那样要进行客户机的安装和管理。
总之,在浏览器中访问Web数据库的方法较多,开发Web应用程序的软件人员需要选择适当的方法,但有些方法的编程接口较为复杂,妨碍了它的进一步应用。作为Web页管理员,更希望把精力集中在信息发布或程序设计本身,而不愿意在接口方面耗费太多的精力。而通过三层结构中间层采用组件和分布式对象技术是今后Web数据库系统发展方向。
关键词:WEB服务器 B/S ODBC CGI Web API ADO JDBC OBJECT WEB
B/S软件的根本点就是以浏览器形式与用户打交道,其软件设计的重要内容是客户端访问数据库的方法。基于Web的数据库访问技术是指:在客户端安装Web浏览器,作为用户输入查询条件和显示查询结果的交互界面。用户可以通过填写表格或输入关键字的方式来与WWW进行交互,当用户单击表格上的按钮时,表格中的数据便发送到Web服务器。Web服务器介于Web浏览器与数据库服务器之间,负责用户输入信息的接收。服务器将数据传送至要被处理的脚本或应用程序,并在数据库中查询数据或将数据传递到数据库中。最后,服务器将返回结果插入到HTML页面,传送至客户端以响应用户。这种交互性提高了用户参与的积极性。
一、CGI访问模式
CGI是外部应用程序与Web服务器交互的一个标准接口。CGI应用程序可以完成客户端与服务器的交互操作。遵循CGI标准编写的服务器端的可执行程序称为CGI程序。按照CGI标准编写的外部扩展应用程序可以处理客户端输入的协同工作数据,完成客户端与服务器的交互操作,这在实际应用中非常有用,如可以编写CGI外部扩展程序来访问外部数据库,客户端用户可以通过它和WWW服务器来进行数据查询。CGI一般分两种:标准CGI和缓冲CGI。所有的WWW服务器均应支持标准CGI,按标准CGI编写的程序与具体的WWW服务器无关。而按缓冲CGI编写的程序与WWW服务器有关。采用CGI访问数据数据库结构如图1所示:
各种API均与其相应的Web服务器紧密联系在一起。为了解决复杂与高效之间的矛盾,Netscape与Microsoft均为各自的Web服务器提供了基于API的高级编程接口。Netscape提供的是LiveWire,而Microsoft则提供的是IDC。
基于API的用户应用可实现CGI的全部功能,其作用与CGI类似,也是为了扩展WEB服务器的功能。但其运行机制与CGI不同,API应用以线程方式运行。API方式工作原理是:在服务器起动时,WEB服务器设置提供了指向这些API应用的通用接口,在首次被请求时,API应用被调入内存,执行完毕后,并不马上消失,而是继续驻留在内存中,与WEB服务器处于同一地址空间,当下一次被请求时,WEB服务器只是运行驻留在内存中的相应的API应用,这样就避免了CGI程序每次请求都要重新启动进程相当耗时的进程间的通信及与数据库的连接,并且,可在一个API应用里设置多个用户请求处理函数。因此,系统运行效率以及速度比CGI快得多。
采用Web API结构的优点:API应用程序是与Web服务器软件处于同一地址空间的DLL,因此所有的HTTP服务器进程能够直接利用各种资源,这显然比调用不在同一地址空间的CGI程序所占用的系统时间要短,比CGI具有更高执行效率,客户端响应时间也较短。其缺点:(1)可移植性差:由于各个Web服务器厂商纷纷推出自己的API,使得各种API之间的兼容性很差,开发API程序需要多线程、进程同步、直接协议编程等知识,其程序开发比CGI开发更困难。(2)此外健壮性也不好保证,这是由于API进行与Web服务器处于同一系统空间,服务器端一个违规操作有可能导致整个Web服务器的崩溃。
三、 ADO方式
ADO(ActiveX Data Object即ActiveX数据对象)是Microsoft在OLE DB标准的基础上定义的一种面向对象、与语言无关的数据库应用编程接口。如果选用ADO作为访问Web数据库接口,则最好方法是结合ASP来写应用程序。ASP是微软公司基于ActiveX技术的一个Web服务器端的开发和运行环境,只能运行在微软提供的平台如Windows NT和IIS等。ASP属于服务器端技术,直接建立在服务器中,并且作为Web服务器的一个服务运行,支持多用户、多线程;与其它常见的Client端实现动态性的技术如Java Applet。 ActiveX Control。JavaScript等不同,一个ASP页面即可包含客户端脚本,更主要的是也可包含服务器端脚本,引擎解释执行,执行结果以HTML的形式返回给用户。
采用ADO结合ASP访问数据库系统有如下优点:(1)与HTML完全结合,可以使用任何脚本语言,易于开发,易于维护:(2)所有服务器端脚本代码均在服务端执行,有效地保护了开发者的知识产权,且支持任何一种浏览器;(3)面向对象,可充分利用现存的ActiveX组件,易于扩展Server端功能;(4)可以访问非关系数据库,这是其它方式无法实现的。
ADO方式明显的缺点是:仅适用于微软提供的一些平台,且ASP程序是解释型语言编写的,运行速度相对较慢。
四、ODBC/JDBC数据库连接模式
采用ODBC/JDBC的连接模式,基本结构如图3所示。ODBC是一个中间件,它把一个应用的数据请求转换为DBMS可以理解的命令。JDBC是JAVASOFT公司的规范,它建立了一个程序级的设计接口,在统一方式下与数据库通迅,类似于ODBC概念。JDBC标准基于X/OPEN SQL调用级接口,与ODBC具有相同的基础。Oracle与Sybase数据库均支持ODBC/JDBC。
API方法与Web服务器结合紧密,所以性能较高。但是利用底层的API开发数据库访问程序仍然很困难,因此一般使用基于底层API的高层数据库编程接口,这就是我们所说的ODBC。ODBC是“开放数据库互连”的简称,是一种使用SQL的应用程序接口(API) 。ODBC一个最显著的优点是用它生成的程序与数据库或数据库引擎是无关的。ODBC可使程序员方便地编写访问各种DBMS厂商的数据库的应用程序,而不需了解其产品的细节。Web服务器通过数据库驱动程序ODBC向数据库服务器发出SQL请求,数据库服务器接到的是标准的SQL查询语句,数据管理系统执行SQL查询并将查询结果再通过ODBC传回Web服务器。许多服务器扩展程序使用包含ODBC层的系统结构。ODBC是为调用关系数据库提供统一途径的一类API,由于它适用于许多不同的数据库产品,因此是服务器扩展程序开发者们理所当然的选择。
Java语言显示出优于以往编程语言的诸多特色,赢得了众多数据库厂商的支持。为了同时连接到多个数据库进行并行的联合查询,可以充分利用Java语言本身的特色。
在数据库处理方面,Java提供了JDBC(Java数据库连接:Java Database Connectivity),为数据库开发应用提供了标准的应用程序编程接口。与ODBC类似,JDBC也是一种特殊的API,是用于执行SQL语句的Java应用程序接口(JavaAPI),它规定了Java如何与数据库进行交互作用。JDBC由一组用Java语言写的类和接口组成,利用Java机制设计的标准SQL数据库连接接口JDBC去访问数据库。JDBC也是一种规范,其宗旨是让各数据库开发商为Java程序员提供标准的数据库访问类和接口。JDBC与Java结合,使用户很容易地把SQL语句传送到任何关系数据库中,程序员用它编写的数据库应用软件,可在各种数据库系统上运行。采用JDBC可以很容易用SQL语句访问任何商用数据库,采用Java和JDBC编写的数据库应用程序具有与平台无关的特性,很容易用SQL语句访问任何商用数据库,而不必为每一种数据库平台编写不同的程序。
JDBC访问数据库的过程可采用两种方式。一种是通过浏览器连接到Web服务器上,下载含有Java小程序的HTML页,Java小程序在客户端运行,使用JDBC接口,绕过Web服务器,直接与数据库服务器交互,并直接把查询结果的HTML页返回到浏览器。另一种方式则是在WEB服务器端通过JAVA SERVERLETS与数据库服务器交互。
五、几种数据库连接方式的比较
CGI根据浏览器端的http请求激活相应进程,每一个请求对应一个进程。当同时有很多请求时,程序挤占系统资源,造成效率低下。Web API针对这一缺点进行改进,利用DLL(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。这两种技术还存在另外一个问题,那就是开发困难。程序的开发和HTML写作是两个完全不同的过程,需要专门的程序员开发。而另一些较简单的开发技术如JavaScript和IDC(Internet DatabaseConnector)等功能有限。
Microsoft的ODBC API是使用最广泛的访问数据库规范。ODBC2.0 访问数据库时存在同步与异步执行模式之分,如果设计不当,则易发生系统故障甚至系统死锁。但是同步执行模式可以简化程序编制的复杂性。程序员不用过多地了解较复杂的ODBC 2.0 API的使用,而只需使用ODBC的同步执行模式或使用数据控制项和数据库对象变量来编写应用程序,可以提高开发效率,但程序运行速度比不上异步执行模式的速度。
JDBC保持了ODBC的基本特性。两者都基于X/Open SQL调用级接口(CLI:CallLevelInterface)标准。它们的不同就在于JDBC建立在Java语言基础上,并充分利用了其特色,易于使用;ODBC使用的是C界面,C语言大量使用了Java语言中没有的指针功能,不适于以Java为界面的JDBC直接使用。同时,JDBC确保了“100%纯Java”的解决方案。这样,JDBC应用无需像ODBC应用那样要进行客户机的安装和管理。
总之,在浏览器中访问Web数据库的方法较多,开发Web应用程序的软件人员需要选择适当的方法,但有些方法的编程接口较为复杂,妨碍了它的进一步应用。作为Web页管理员,更希望把精力集中在信息发布或程序设计本身,而不愿意在接口方面耗费太多的精力。而通过三层结构中间层采用组件和分布式对象技术是今后Web数据库系统发展方向。