瀏覽器/服務(wù)器應(yīng)用開發(fā)工具(數(shù)據(jù)庫)
時間:2022-11-01 08:30:01 | 來源:信息時代
時間:2022-11-01 08:30:01 來源:信息時代
瀏覽器/服務(wù)器應(yīng)用開發(fā)工具 : 用于開發(fā)瀏覽器、Web服務(wù)器、應(yīng)用服務(wù)器及數(shù)據(jù)庫服務(wù)器的軟件工具。按照Web數(shù)據(jù)庫訪問機(jī)制的不同,可將瀏覽器/服務(wù)器模式歸納為三種結(jié)構(gòu): 以Web服務(wù)器為中心、以應(yīng)用服務(wù)器為中心、以數(shù)據(jù)庫服務(wù)器為中心。這三種結(jié)構(gòu)分別適用于不同的應(yīng)用環(huán)境,可根據(jù)不同的情況選擇使用。前兩種結(jié)構(gòu)主要用于信息系統(tǒng)的開發(fā),后一種結(jié)構(gòu)主要用于信息系統(tǒng)的數(shù)據(jù)庫管理。以應(yīng)用服務(wù)器為中心的軟件結(jié)構(gòu)把Web技術(shù)和三層客戶/服務(wù)器有機(jī)結(jié)合在一起,是目前信息系統(tǒng)采用的主流軟件結(jié)構(gòu)。
1. 以Web服務(wù)器為中心
以Web服務(wù)器為中心的軟件結(jié)構(gòu)是早期Web數(shù)據(jù)庫應(yīng)用開發(fā)最主要的方式,它來自于傳統(tǒng)的Web應(yīng)用程序結(jié)構(gòu)。在這種軟件結(jié)構(gòu)中,核心是Web服務(wù)器,所有的數(shù)據(jù)庫應(yīng)用邏輯都在Web服務(wù)器端的服務(wù)器擴(kuò)展程序中執(zhí)行。服務(wù)器擴(kuò)展程序是使用CGI或Web API在Web服務(wù)器端編寫的數(shù)據(jù)庫應(yīng)用程序。服務(wù)器擴(kuò)展程序通過標(biāo)準(zhǔn)的數(shù)據(jù)庫訪問中間件(如基于ODBC/JDBC的程序等)完成和數(shù)據(jù)庫的交互,生成HTML文檔,通過HTTP協(xié)議發(fā)送到客戶端瀏覽器中顯示。以Web服務(wù)器為中心的軟件結(jié)構(gòu)如圖1所示。
圖1 以Web服務(wù)器為中心的軟件結(jié)構(gòu)
服務(wù)器擴(kuò)展程序主要使用CGI、Web API兩種編程接口編寫。它們的概念和特點(diǎn)有:
CGI(common gateway interface),即公共網(wǎng)關(guān)接口,是Web上最早使用的也是使用最廣泛的數(shù)據(jù)庫應(yīng)用技術(shù)。Web服務(wù)器使用環(huán)境變量傳輸有關(guān)的請求信息到CGI程序,CGI應(yīng)用程序從數(shù)據(jù)庫中獲得數(shù)據(jù),然后格式化生成HTML文檔返回瀏覽器。CGI是作為一個獨(dú)立的進(jìn)程在Web服務(wù)器上運(yùn)行的,進(jìn)程的創(chuàng)建和關(guān)閉都會嚴(yán)重消耗系統(tǒng)的資源,這是CGI最顯著的缺陷。
在CGI之后,出現(xiàn)了Web API(Web application programming interface),它是Web服務(wù)器應(yīng)用編程接口的統(tǒng)稱。Web API的運(yùn)行方式和CGI類似,但是在執(zhí)行時是動態(tài)加載到Web服務(wù)器進(jìn)程內(nèi),相比CGI而言運(yùn)行效率有所提高。
上述兩種編程接口與傳統(tǒng)的客戶/服務(wù)器結(jié)構(gòu)相比,在用戶界面、事務(wù)處理以及系統(tǒng)的運(yùn)行效率等方面還存在著很大的不足。其主要原因是:
(1) 用戶界面受HTML語言的限制: 由于HTML語言在設(shè)計時主要面向文檔顯示,因而不論是在顯示能力還是在交互能力上,都無法與傳統(tǒng)的基于客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用相比。
(2) Web服務(wù)器負(fù)載過重:由于所有的應(yīng)用邏輯都在Web服務(wù)器端執(zhí)行,這就使得客戶端和Web服務(wù)器通信頻繁,再加上在Web服務(wù)器端訪問數(shù)據(jù)庫的開銷,使得Web服務(wù)器運(yùn)行負(fù)載過重。
(3) HTTP協(xié)議的效率低: Web所使用的HTTP協(xié)議是一種無狀態(tài)的應(yīng)用層協(xié)議,客戶端和Web服務(wù)器之間不保存網(wǎng)絡(luò)連接,因而也不保存客戶的狀態(tài)信息,這種協(xié)議適合于文檔的傳送,但用于數(shù)據(jù)庫應(yīng)用開發(fā)時,存在嚴(yán)重的效率問題。
通過上述分析,可以清楚地看到,問題的根本原因在于Web框架自身。由于Web最初的目的在于文檔的發(fā)布,它的實(shí)現(xiàn)機(jī)制和標(biāo)準(zhǔn)的制訂,包括HTML、HTTP以及Web服務(wù)器等,都是基于這種文檔發(fā)布的需求。而數(shù)據(jù)庫應(yīng)用系統(tǒng)的特征在于分布計算和事務(wù)處理,因此,這種軟件結(jié)構(gòu)無法很好地滿足數(shù)據(jù)庫應(yīng)用開發(fā)需要。
目前,支持這種軟件結(jié)構(gòu)的產(chǎn)品有: Microsoft Internet Information Server(IIS)、Netscape Web Server、IBM WebSphere、ColdFusion、Apache Server(免費(fèi))等。它們通常都支持CGI編程接口。由于各廠商的Web服務(wù)器有所不同,它們支持的Web API也有所不同,例如,Microsoft IIS支持的是ISAPI,Netscape Web Server支持的是NSAPI。
2. 以應(yīng)用服務(wù)器為中心
以應(yīng)用服務(wù)器為中心的軟件結(jié)構(gòu)是Web服務(wù)器和三層客戶/服務(wù)器結(jié)合的成果。它把兩方面的優(yōu)勢集中于一體,不僅具備Web的界面統(tǒng)一、易于發(fā)布和維護(hù)等優(yōu)點(diǎn),而且具備三層客戶/服務(wù)器的邏輯分層清晰、效率高等優(yōu)點(diǎn)。此外,ActiveX、Java等構(gòu)件技術(shù)的成熟也促進(jìn)了這種軟件結(jié)構(gòu)的成熟和完善。
這種軟件結(jié)構(gòu)可分為四部分: 客戶機(jī)瀏覽器、Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器。應(yīng)用服務(wù)器端采用了構(gòu)件技術(shù),應(yīng)用構(gòu)件封裝了所有的數(shù)據(jù)庫應(yīng)用邏輯,它們通過標(biāo)準(zhǔn)的數(shù)據(jù)庫訪問中間件(如ODBC/JDBC等)完成和數(shù)據(jù)庫的交互。Web服務(wù)器仍然負(fù)責(zé)接收客戶機(jī)瀏覽器的HTTP請求,并將請求的頁面和控件返回給客戶端。但是,對于客戶端的表現(xiàn)邏輯,存在兩種不同的解決方式: 一種是基于構(gòu)件的方式,如圖2所示; 另一種是基于腳本的方式,如圖3所示。
圖2 以應(yīng)用服務(wù)器為中心——基于構(gòu)件的方式
圖3 以應(yīng)用服務(wù)器為中心——基于腳本的方式
(1)基于構(gòu)件的方式: 客戶端表現(xiàn)邏輯通過構(gòu)件實(shí)現(xiàn)。Web服務(wù)器端接受客戶端的請求后,將相應(yīng)的客戶端構(gòu)件(如Java Applet或ActiveX控件)同時下載到客戶端??蛻舳藰?gòu)件再通過遠(yuǎn)程構(gòu)件訪問標(biāo)準(zhǔn)方法(如DCOM、IIOP、Java RMI等)向應(yīng)用服務(wù)器上的應(yīng)用構(gòu)件發(fā)出請求,并獲取處理結(jié)果。
這種方式的優(yōu)點(diǎn)就是客戶端從Web服務(wù)器下載構(gòu)件后,客戶端構(gòu)件直接與應(yīng)用服務(wù)器通信,無須再通過Web服務(wù)器訪問數(shù)據(jù)庫,降低Web服務(wù)器的負(fù)載,從而提高整個系統(tǒng)的響應(yīng)速度。但是,它要求客戶端必須能夠支持特定的構(gòu)件標(biāo)準(zhǔn),對于系統(tǒng)的跨平臺特性有所影響。
在企業(yè)內(nèi)部的Intranet系統(tǒng)開發(fā)中,采用這種方式較好。因?yàn)樵谄髽I(yè)內(nèi)部通常都是同一平臺,采用統(tǒng)一的構(gòu)件標(biāo)準(zhǔn),易于開發(fā)和維護(hù)。同時,它具備了構(gòu)件開發(fā)的易擴(kuò)充、易重用特性。
(2)基于腳本的方式: 在這種方式中,客戶端表現(xiàn)邏輯完全通過腳本實(shí)現(xiàn)。服務(wù)器端程序(如ASP、JSP等)由Web服務(wù)器端動態(tài)解釋執(zhí)行,這些程序可以調(diào)用應(yīng)用服務(wù)器上的應(yīng)用構(gòu)件,并獲取處理結(jié)果,最終Web服務(wù)器將依據(jù)執(zhí)行結(jié)果生成適當(dāng)?shù)腍TML返回給客戶機(jī)瀏覽器。采用這種方式的技術(shù)主要有: ASP、JSP等,它們分別采用了ActiveX和Java構(gòu)件標(biāo)準(zhǔn)。
基于腳本的方式優(yōu)點(diǎn)在于跨平臺特性好,客戶端只需要安裝瀏覽器即可,沒有其他特殊的要求。缺點(diǎn)就是表現(xiàn)邏輯通過腳本語言實(shí)現(xiàn),維護(hù)和擴(kuò)展難度較大。
在Internet電子商務(wù)系統(tǒng)開發(fā)中,采用“基于腳本的方式”較好。因?yàn)閃WW上客戶端的種類千差萬別,跨平臺特性就成為重點(diǎn)要考慮的因素,它無法采用統(tǒng)一的構(gòu)件標(biāo)準(zhǔn),因此,不能采用“基于構(gòu)件的方式”,只能選用“基于腳本的方式”,使其具有跨平臺特性。但由于表現(xiàn)邏輯通過腳本語言實(shí)現(xiàn),存在著維護(hù)和擴(kuò)展工作量大、實(shí)現(xiàn)難度大等缺點(diǎn)。
Web服務(wù)器和應(yīng)用服務(wù)器結(jié)合的軟件結(jié)構(gòu)實(shí)際上是Web和三層客戶/服務(wù)器結(jié)構(gòu)相結(jié)合的實(shí)現(xiàn)模式,既保留了Web低成本、開放性和客戶端“零維護(hù)”的優(yōu)點(diǎn),又充分利用了三層客戶/服務(wù)器結(jié)構(gòu)在性能、功能上的諸多優(yōu)點(diǎn),同時為原有的客戶/服務(wù)器系統(tǒng)向Web遷移提供了一條有效途徑。
目前,支持這種軟件結(jié)構(gòu)的產(chǎn)品有: IBM WebSphere、ColdFusion、Oracle Application Server、Enhydra Application Server、Netscape Application Server、Microsoft IIS+MTS等。除微軟的產(chǎn)品外,它們大都支持EJB和XML,采用Java作為應(yīng)用服務(wù)器端的構(gòu)件標(biāo)準(zhǔn),適合于運(yùn)行在多種平臺上。此外,Enhydra已經(jīng)通過Internet公開了其應(yīng)用服務(wù)器源代碼。Microsoft的產(chǎn)品只能基于微軟的平臺和DCOM標(biāo)準(zhǔn),受到很大的局限性。
3. 以數(shù)據(jù)庫服務(wù)器為中心
以數(shù)據(jù)庫服務(wù)器為中心的軟件結(jié)構(gòu)主要來自于數(shù)據(jù)庫管理的需求。隨著數(shù)據(jù)庫管理系統(tǒng)的不斷發(fā)展,數(shù)據(jù)庫管理逐漸成為一個復(fù)雜的工作。Internet的出現(xiàn)為數(shù)據(jù)庫管理提供了新的思路,簡單易用的瀏覽器界面完全可以作為通用的數(shù)據(jù)庫管理操作界面。這種軟件結(jié)構(gòu)的核心是數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫服務(wù)器中包含了HTTP服務(wù)器,它能夠接受客戶端的HTTP請求,并返回HTTP應(yīng)答。以數(shù)據(jù)庫服務(wù)器為中心的軟件結(jié)構(gòu)如圖4所示。
圖4 以數(shù)據(jù)庫服務(wù)器為中心的軟件結(jié)構(gòu)
這種軟件結(jié)構(gòu)將數(shù)據(jù)庫服務(wù)器和HTTP服務(wù)器緊密地結(jié)合起來,它提供了統(tǒng)一的界面,即Internet瀏覽器的方式來訪問數(shù)據(jù)庫,這就使得通過Web瀏覽器就可以開發(fā)、管理和監(jiān)視Web站點(diǎn)和應(yīng)用程序,并提供了統(tǒng)一訪問方式,而且使得開發(fā)地點(diǎn)十分自由,所以生產(chǎn)率大大提高。而且還能夠獲得數(shù)據(jù)庫服務(wù)器的所有強(qiáng)大功能,并縮短Web開發(fā)過程,比如說瀏覽數(shù)據(jù)庫中的對象,查詢和更新數(shù)據(jù),甚至執(zhí)行存儲過程。目前,支持這種軟件結(jié)構(gòu)的產(chǎn)品有:Oracle WebDB、Microsoft SQL Server2000等。