[摘要] 介紹基于中間件的Web數(shù)據(jù)庫服務(wù)模型以及幾個最基本的中間件技術(shù)。
[關(guān)鍵詞] 中間件 Web服務(wù)器 數(shù)據(jù)庫
基于中間件的Web數(shù)據(jù)庫服務(wù)作為一種基于HTTP協(xié)議標(biāo)準(zhǔn)的多層Client/Server數(shù)據(jù)庫服務(wù)模型模式,其基本框架如圖所示。
中間件負(fù)責(zé)管理Web服務(wù)器和數(shù)據(jù)庫服務(wù)器之間的通信并提供應(yīng)用程序服務(wù)(功能層),它能夠直接或間接調(diào)用外部程序或腳本代碼來訪問數(shù)據(jù)庫,因此可以提供與數(shù)據(jù)庫相關(guān)的動態(tài)HTML頁面,或執(zhí)行用戶查詢并將查詢結(jié)果格式化成HTML頁面,通過Web服務(wù)器返回給用戶瀏覽器。
圖Web數(shù)據(jù)庫服務(wù)模型
根據(jù)中間件的功能和結(jié)構(gòu)以及數(shù)據(jù)庫連接技術(shù)的不同,目前存在著多種Web數(shù)據(jù)庫服務(wù)模型。最基本的中間件技術(shù)有通用網(wǎng)關(guān)接口(CGI)、應(yīng)用程序編程接口(API)接口以及Web_DB技術(shù)產(chǎn)品。
一、CGI技術(shù)
通用網(wǎng)關(guān)接口CGI,及其改進(jìn)產(chǎn)品FastCGI,可以作為上圖中的中間件,允許Web服務(wù)器執(zhí)行外部程序,通過外部程序來訪為數(shù)據(jù)庫等外部資源,以產(chǎn)生HTML文檔并返回Web服務(wù)器。這一方案的優(yōu)點(diǎn)是易于實(shí)現(xiàn),用戶可以明用瀏覽器,暗用數(shù)據(jù)庫。用戶在Web頁面上交互式填查詢表,即可通過Web進(jìn)行異地?cái)?shù)據(jù)庫存取,并在瀏覽器上顯示結(jié)果。缺點(diǎn)是當(dāng)中間件為CGI時(shí),每次訪問都需要重新啟動一個CGI程序?qū)嵗赃M(jìn)程形式運(yùn)行,占用資源較多,效率較低,且難于解決連續(xù)事務(wù)處理。
二、API技術(shù)
為了克服CGI局限,一些Web服務(wù)器廠商開發(fā)出專用的API,允許開發(fā)人員編寫程序來擴(kuò)充服務(wù)器的功能,如Microsoft的ISAPI、Netscape的NSAPI等。與CGI相比,API應(yīng)用程序與Web服務(wù)器結(jié)合更緊密,占用的系統(tǒng)資源也少得多,而其運(yùn)行效率卻大大得到提高,同時(shí)還能提供更好的保護(hù)和安全性。
然而,如果純粹依賴于API實(shí)現(xiàn)數(shù)據(jù)庫訪問,開發(fā)API應(yīng)用程序也要比開發(fā)CGI程序要復(fù)雜的多,而且,由于各種API之間兼容性很差,缺乏一個統(tǒng)一的業(yè)界標(biāo)準(zhǔn),因此應(yīng)用程序往往還只能工作在專用的Web服務(wù)器甚至操作系統(tǒng)上。
三、Web_DB技術(shù)產(chǎn)品
如上所述,CGI和API有一系列缺點(diǎn),這些缺點(diǎn)造就了Web數(shù)據(jù)庫的商業(yè)機(jī)會,各公司競相出臺Web_DB技術(shù)產(chǎn)品。根據(jù)實(shí)現(xiàn)技術(shù)不同,又可以分為以下幾種:
1.提供數(shù)據(jù)庫產(chǎn)品的CGI接口
這類技術(shù)通常為數(shù)據(jù)庫產(chǎn)品及其開發(fā)工具提供專用的CGI程序接口,將開發(fā)人員從繁重的CGI編碼中解放出來,從而提高開發(fā)效率。如用于Microsoft Visual FoxPro的FoxWeb。這類技術(shù)并未克服CGI的局限。
2.提供支持?jǐn)?shù)據(jù)庫訪問的API接口
這類產(chǎn)品在Web服務(wù)器的API基礎(chǔ)上,提供數(shù)據(jù)庫的訪問接口,在客戶端采用VBScript、JavaScript、Java Applet、Plug-in等技術(shù)實(shí)現(xiàn)動態(tài)Web應(yīng)用。目前這類產(chǎn)品最豐富,應(yīng)用也比較成熟。如Microsoft的IDC、Borland的Web Broker、Sybase的Web.SQL和Web.PB等。
3.提供專用的Web服務(wù)器,捆綁數(shù)據(jù)庫服務(wù)
如Oracle的Web Server能和Oracle7/8數(shù)據(jù)庫系統(tǒng)無縫結(jié)合,使應(yīng)用程序具有較高的運(yùn)行效率。但難以連接其它數(shù)據(jù)庫系統(tǒng)。
這些技術(shù)和產(chǎn)品各有特色,其中很多中間件產(chǎn)品在充分兼容CGI標(biāo)準(zhǔn)和利用API技術(shù)的基礎(chǔ)上,還引入了擴(kuò)充的HTML標(biāo)集合服務(wù)器端的程序或腳本,并允許建立包含擴(kuò)充標(biāo)記和腳本的HTML頁面模板;而在響應(yīng)用戶的請求的同時(shí),則通過轉(zhuǎn)換這些特殊的標(biāo)記和執(zhí)行相應(yīng)的程序或腳本來完成數(shù)據(jù)庫的訪問,同時(shí)生成動態(tài)的HTML頁面返回給用戶。
但我們也注意到,大多數(shù)的Web_DB技術(shù)產(chǎn)品是由Web服務(wù)器或數(shù)據(jù)庫廠商開發(fā)的,很少能夠做到同時(shí)兼容不同的操作系統(tǒng)、Web服務(wù)器和數(shù)據(jù)庫系統(tǒng),并且又具有較好的開發(fā)和運(yùn)行效率。
在實(shí)現(xiàn)基于Web的醫(yī)學(xué)影像數(shù)據(jù)庫檢索服務(wù)時(shí)可采用Allaire公司的ColdFusion,ColdFusion也屬于Web_DB技術(shù)產(chǎn)品,但是由于Allaire屬于第三方開發(fā)商,使得ColdFusion能夠很好地獨(dú)立于操作系統(tǒng)、Web服務(wù)器和數(shù)據(jù)庫系統(tǒng)。
參考文獻(xiàn):
[1]王繼成等編著:Web應(yīng)用開發(fā)原理與技術(shù)[M]. 機(jī)械工業(yè)出版社, 2003年4月
[2]劉偉等編著:CGI技術(shù)全面接觸[M]. 清華大學(xué)出版社,2001年8月
[3]楊放春等編著:異構(gòu)網(wǎng)絡(luò)中間件與開放式API技術(shù)[M].北京郵電大學(xué)出版社, 2007年3月