Web应用编程接口(数据库)
时间:2022-11-28 02:30:01 | 来源:信息时代
时间:2022-11-28 02:30:01 来源:信息时代
Web应用编程接口 : 驻留在Web服务器中的程序代码,一般作为一个动态链接库(dynamic link library,DLL)提供,其扩展Web服务器的功能与CGI相同。各种API与对应的Web服务器相结合,其初始开发目标是服务器的运行性能进一步发掘和提高,开发API应用程序需要一些编程方面的专门知识,如多线程、进程同步、直接协议编程以及错误处理等。
目前主要的Web API有Microsoft公司的ISAPI、Netscape公司的NSAPI和O’Reilly公司的WSAPI。使用这些API开发的程序性能优于CGI开发的程序,这是因为所开发的程序是与Web服务器软件处于同一地址空间的DLL,因此,所有的HTTP服务器进程能够直接利用各种资源。这比调用在不同地址空间的CGI程序语句要占用更少的系统调用时间。
同时,Microsoft和Netscape还在各自的服务器中提供了基于API的编程接口。这些编程接口比API更为好用。Microsoft提供的是IDC(Internet database connector),Netscape提供的是LiveWire。
(1) Microsoft的IDC:IDC模块是IIS的一个动态链接库,它通过ODBC访问各类数据库。如图1是通过IDC访问数据库的示意图。
图1 通过IDC访问数据库
IDC使用两类文件: IDC脚本文件(.IDC)和HTML模板文件(.HTX)。其中脚本文件控制如何访问数据库,它包含有构造数据库连接所必需的参数信息,如数据库名、用户名、口令和SQL语句: 脚本文件中也包含与相应.IDC文件对应的.HTX文件名和存放路径。HTML模板文件是一个实际HTML文档的模板,它提供了一种直观的方法来说明如何将数据插入到Web页面中。模板中可以包括静态文字、图像及其他HTML页面可能有的元素。
对SQL服务器的每一个查询都需要一个.IDC文件和一个.HTX文件。脚本文件存储在Web服务器中,模板文件可以存放在Web服务器所能访问到的任何地方。
IDC是这样工作的: 当Web服务器IIS对由浏览器送过来的URL字符串做出反应时,如果该字符串以.IDC结束,IIS就知道这是一个IDC请求,将其传给IDC模块,IDC一次读取脚本文件并同数据库服务器交互。IDC模块从数据库得到查询后,就用模板文件格式化该结果,得到一个实际的HTML文档,然后将该文档交给Web服务器IIS,由IIS负责将HTML文档发给浏览器。通过IDC,既可以从数据库中进行查询,也可以将数据写到数据库中。
(2) Netscape的LiveWire/LiveWire Pro: Live Wire是一个强大易用的Web开发环境,而不仅仅是一个数据库访问接口。利用LiveWire,开发人员可以开发和管理Web页面,并且可以利用SQL语句或ODBC直接访问数据库。
LiveWire的开发语言是JavaScript。JavaScript是由Netscape和Sun对Java所作的扩充,它类似于Java或C++,但在许多方面更加易于理解;JavaScript语言中包含有一个Database对象,可以用该对象来打开或关闭数据库连接,查询或修改数据库;LiveWire的数据库访问函数是一组用JavaScript编写的函数,这些函数支持对Informix、Sybase及Oracle的访问,也可以通过ODBC访问其他的数据库,如Microsoft Access、Borland Paradox等。
数据库访问函数可以传送SQL语句到数据库服务器,由数据库服务器执行完后返回结果,使用透明(pass-through)SQL方式,该函数也可以访问数据库中的存储过程,支持数据库的触发器,支持事务处理。同Microsoft的IDC一样,Live Wire也仅支持自己的Web服务器。表1所示是CGI、JDBC和API三种访问数据库技术的比较。
CGI是一个大家都支持的规范,但是用CGI编程太复杂,一个简单的SELECT查询,用CGI来实现需要上百条语句,并且CGI运行的效率也不高,所以CGI有被取代的趋势。
表1 三种访问数据库技术的比较
| CGI | API | JDBC |
编程的复杂度 | 复杂 | 复杂 | 中等 |
对程序员的要求 | 高 | 高 | 中等 |
开发时间 | 长 | 长 | 中等 |
可移植性 | 较好 | 差 | 好 |
CPU的负载 | 高 | 较低 | 较低 |
用Web API编写的程序运行效率较高,但使用API编程比用CGI还困难,它对程序员的要求更高;而且API之间没有互通性,用一种API编写的程序不能到另一厂商的Web服务器上运行,这就限制了它的使用范围。
JDBC借鉴了ODBC的思想,并且可以利用现有的ODBC驱动程序访问各类数据库。自从JDBC被推出后,在数据库方面,所有的数据库厂商都宣布支持JDBC标准,并且已经推出或准备推出各自的JDBC驱动程序。在Web服务器方面,除了Microsoft坚持自己的ActiveX之外,其他厂商都宣布支持JDBC标准。随着时间的推移,JDBC将会取代CGI成为新的标准。