Web數據庫中間件技術
2024-07-21 02:10:55
供稿:網友
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。web數據庫中間件技術
曾曉金
(云南工業大學計算機應用重點實驗室 昆明 650051)
摘要:介紹了web數據庫的幾種中間件解決方案,并比較了它們的特色與不足,以及web數據庫出現的相應最新技術。
關鍵詞:中間件 cgi asp isapi nsapi jdbc
隨著internet/intrranet的興起與發展,web服務器與數據庫服務器的連接顯得越來越重要,許多廠家不斷推出新技術、新產品,使得連接更加簡潔、迅速和方便。web與數據庫連接技術已成為基于web的信息管理系統的核心,為internet上的電子商貿打下了基礎。
一般來說,通過web頁實現對數據庫訪問的基本框圖如圖1,在整個系統中關鍵的技術是中間件的解決方案。
圖1、web頁面訪問數據庫示意圖
中間件負責管理web服務器和數據庫服務器之間的通信并提供應用程序服務。由于駐留在web服務器上,因而中間件軟件能夠調用作為web服務器和數據庫服務器間"傳輸機制"的外部程序或"編碼",并將執行查詢等以html頁面或純文本的形式將信息返回給最終用戶。數據庫服務器負責管理駐留在數據庫服務器中的數據。
一、現對當前幾種流行的中間件的解決方案作一討論。
1.通用網關技術(cgi)
cgi是一種web站點上可以用來訪問web站點的用戶交互的各種程序的標準,使用cgi腳本允許用戶在瀏覽器中等服務器上的數據庫交互,完成對數據庫的各種操作。
幾乎使用的服務器軟件都支持cgi,開發者可以使用任何一種web服務器內置語言編寫cgi,包括perl語言,c,c++,vb和delphi等。
cgi的工作原理是瀏覽器通過web頁面的表單搜索參數,這些參數通過http傳遞web服務器,在服務器通過cgi腳本分析參數(命令行參數或環境變量),同時啟動通路程序,把分析后的參數轉化為sql命令,交數據庫服務器執行,然后cgi程序返回處理結果給web服務器,最后向客戶機返回html或純文本格式的結果并斷開連接。
cgi缺點是執行速度較慢,web服務器每啟動一個數據查詢服務,就必須啟動一個新的cgi進程,相對服務器資源代價比較高。
2.asp(active server pages)
asp是一種開放的,可以將html腳本及可重用的active server組件結合在一起以建立高效的動態的基于web的應用程序環境,利用asp,可以增加運行在服務器端的腳本的新特性,如訪問數據庫。
asp支持active server組件的使用,active server組件通過組件對象模型(com)為asp提供了可編程的界面,其中組件之一active data object(ado)提供了與數據庫相連的機制。且使用asp可以直接在html文件中包含可執行的腳本,html開發和腳本開發可以變為一個過程,而不象cgi、isapi以及其他方法一樣,程序和html文件要求在不同的設計環境導致程序產生和修改困難。
3.應用編程接口(api)
鑒于cgi的一些缺陷,microsoft和netscape開發了專用的web服務器中的程序代碼(如動態鏈接庫dll),且一般與web服務器軟件處在內存的同一地址空間中,因此每次調用時是在內存中運行相應的程序段,而不是像cgi那樣需要啟動新的進程,因而效率要比cgi高得多。
api技術主要缺點是開發難度大,且可移植性差,開發出的應用程序只能在相應的web服務器上運行,缺乏通用性。
為了減輕開發應用程序的困難,netscape和microsoft在其各自的服務器中提供了基于api的編程接口。netscape提供了基于nsapi的livewire,它是專門設計的全面開發方案,開發人員可以開發和管理www界面、www網點,并且可以利用sql語句或odbc直接訪問數據庫。microsoft則提供了基于isapi的idc模塊,它是iis的一個動態連接庫(httpodbc.dll),并通過odbc訪問各類數據庫。
4.jdbc技術
java是一種簡單、面向對象、易傳送、穩固安全、多線程執行控制及3d空間設計的語言,它為internet注入了交互性。java支持數據庫的訪問,是因為sun公司提供了一種標準的sql訪問數據庫的java語言應用程序編程接口(jdbc)。構成java語言的基礎是一系列類庫,而jdbc正是定義了java與數據庫之間的接口類庫(java.sql包),它是java語言中執行sql語句的api,它由一系列類和接口所組成,這些類和接口均是由java語言寫成的,通過它一個程序開發者可以在java語言中建立與數據庫的鏈接,執行sql語句和處理sql語句返回的結果。
采用jdbc很容易用sql語句訪問異構數據庫,如通過jdbc api,只需編寫一個jdbc api,就可以把sql查詢語句送往sybase,oracle或 informix數據庫,同時采用java語言編寫應用程序,具有平臺無關性,不要為不同的平臺編寫不同的應用程序。
圖2、jdbc技術工作示意圖
采用jdbc技術其工作方式為:客戶端首先訪問web服務器,下載java字節碼文件,并將applet相關類的字節碼文件和jdbc接口字節碼文件下栽到客戶端,然后與web服務器脫離,接著applet根據數據庫地址,端口號和帳號與數據庫服務器連接進行交互,這樣用戶與數據庫服務器的交互是由瀏覽器直接完成的。由于jdbc技術的可操作性、可維護性和安全性及事務處理能力、使用效率都比較高,因此具有很大的優勢。
java與數據庫的連接機制與cgi和api有所不同,在客戶機上運行java applet通過jdbc技術可以繞過web服務器直接和數據庫服務器連接,并直接把帶有結果的html頁返回客戶機瀏覽器。
象odbc一樣,jdbc提供給程序員的編程接口是由兩部分組成,一是面向應用程序的編程接口jdbc api,它是為應用程序員提供的,二是供底層開發的驅動程序接口jdbc driver api,它是各個商業數據庫廠商提供的。目前,jdbc已經得到了許多廠商的支持,包括 borland,ibm,oracle和sybase等公司,當前流行的大多數數據庫系統都推出了自己的jdbc驅動程序。
二、結束語
數據庫在web上的應用無疑增強web的功能和吸引力,我們可以采用不同的中間件解決方式把web與數據庫相集成,達到綜合信息服務的目的。值得關注的是jdbc技術,jdbc作為新的聯結web服務器與數據庫的橋梁,同時仍保留著java本身許多引人注目的特性,大多數流行的數據庫系統都已推出了自己的jdbc驅動程序,其主要的問題則是代碼的執行效率問題,同時,還面臨著微軟公司的activex的有力挑戰。
參 考 文 獻
1、[美]jeffry dwight等著 ,cgi開發使用手冊,機械工業出版社
2、[美]daniel j.berlin,etal著,清華大學出版社
3、張世永編,數據庫與www,復旦大學出版社
4、陳品德,基于web的信息系統的開發,計算機工程(1998、3)
5、邵立兵,sybase數據庫與web的互連,計算機工程(1998、3)
6、陳喃,java的遠程數據庫訪問模型及其實現,計算機系統應用(1998、9)
7、劉東等,基于www的數據庫應用,計算機系統應用(1998,4)
8、羅東川,java語言與database 之間的接口--jdbc,計算機系統應用(1998,3)
9、羅娟等,web 與數據庫技術,計算機工程(1998,8)
10、譚郁松等,基于web環境下的異構數據庫連接技術的研究與實現,計算機工程(1998、8)