博客系統(tǒng)的重要技術(shù)_第1頁(yè)
博客系統(tǒng)的重要技術(shù)_第2頁(yè)
博客系統(tǒng)的重要技術(shù)_第3頁(yè)
博客系統(tǒng)的重要技術(shù)_第4頁(yè)
博客系統(tǒng)的重要技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

博客系統(tǒng)的重要技術(shù)jsp技術(shù)在Sun正式發(fā)布JSP(JavaServerPages)之后,這種新的Web應(yīng)用開(kāi)發(fā)技術(shù)很快引起了人們的關(guān)注。JSP為創(chuàng)建高度動(dòng)態(tài)的Web應(yīng)用提供了一個(gè)獨(dú)特的開(kāi)發(fā)環(huán)境。按照Sun的說(shuō)法,JSP能夠適應(yīng)市場(chǎng)上包括ApacheWebServer、IIS4.0在內(nèi)的85%的服務(wù)器產(chǎn)品。JSP與ASP(ASP詳見(jiàn)第6章所述)非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。同時(shí),ASP和JSP都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(yè)(禮jsp)。Web服務(wù)器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶。程序片段可以操作數(shù)據(jù)庫(kù)、重新定向網(wǎng)頁(yè)以及發(fā)送email等等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對(duì)客戶瀏覽器的要求最低,可以實(shí)現(xiàn)無(wú)Plugin,無(wú)ActiveX,無(wú)JavaApplet,甚至無(wú)Frame。ASP和JSP的區(qū)別主要有以下兩點(diǎn):一是ASP的編程語(yǔ)言是VBScript之類的腳本語(yǔ)言,JSP使用的是Java、JavaScript等;二是ASP與JSP這兩種技術(shù)的語(yǔ)言引擎用完全不同的方式處理頁(yè)面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執(zhí)行;在JSP下,代碼被編譯成Servlet并由Java虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì)JSP頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。JSP技術(shù)在多個(gè)方面加速了動(dòng)態(tài)Web頁(yè)面的開(kāi)發(fā)。它具有很多優(yōu)點(diǎn)。首先,它可以將內(nèi)容的生成和顯示進(jìn)行分離。使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面;使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Beans中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過(guò)訪問(wèn)JavaBeans組件,使用JDBCTM技術(shù)訪問(wèn)數(shù)據(jù)庫(kù),或者包含文件),并且將結(jié)果以HTML(或者XML)頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。其次,強(qiáng)調(diào)可重用的組件。絕大多數(shù)JSP頁(yè)面依賴于可重用的,跨平臺(tái)的組件(JavaBeans或者EnterpriseJavaBeansTM組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團(tuán)體所使用?;诮M件的方法加速了總體開(kāi)發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開(kāi)發(fā)努力中得到平衡。第三,采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)。Web頁(yè)面開(kāi)發(fā)人員不會(huì)都是熟悉腳本語(yǔ)言的編程人員。JavaServerPage技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時(shí)的功能。JSP技術(shù)實(shí)際上是通過(guò)引擎JSP把JSP標(biāo)簽、JSP頁(yè)中的Java代碼甚至連同靜態(tài)HTML內(nèi)容都轉(zhuǎn)換為大塊的Java代碼。這些代碼塊被JSP引擎組織到用戶看不到的JavaServlet中去,然后Servlet自動(dòng)把它們編譯成Java字節(jié)碼。這樣,當(dāng)網(wǎng)站的訪問(wèn)者請(qǐng)求一個(gè)JSP頁(yè)時(shí),在他不知道的情況下,一個(gè)已經(jīng)生成的、預(yù)編譯過(guò)的Servlet實(shí)際上將完成所有的工作。非常隱蔽而又高效。因?yàn)镾ervlet是編譯過(guò)的,所以網(wǎng)頁(yè)中的JSP代碼不需要在每次請(qǐng)求該頁(yè)時(shí)被解釋一遍。JSP引擎只需在Servlet代碼最后被修改后編譯一次,然后這個(gè)編譯過(guò)的Servlet就可以被執(zhí)行了。由于是JSP引擎自動(dòng)生成并編譯Servlet,不用程序員動(dòng)手編譯代碼,所以JSP能提供高效的性能和快速開(kāi)發(fā)所需的靈活性。JSP的優(yōu)點(diǎn)1,將內(nèi)容的生成和顯示進(jìn)行分離使用JSP技術(shù),Web頁(yè)面開(kāi)發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來(lái)設(shè)計(jì)和格式化最終頁(yè)面。使用JSP標(biāo)識(shí)或者小腳本來(lái)生成頁(yè)面上的動(dòng)態(tài)內(nèi)容(內(nèi)容是根據(jù)請(qǐng)求來(lái)變化的,例如請(qǐng)求帳戶信息或者特定的一瓶酒的價(jià)格)。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí)和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在標(biāo)識(shí)和Beans中,那么其他人,如Web管理人員和頁(yè)面設(shè)計(jì)者,能夠編輯和使用JSP頁(yè)面,而不影響內(nèi)容的生成。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成所請(qǐng)求的內(nèi)容(例如,通過(guò)訪問(wèn)JavaBeans組件,使用JDBCTM技術(shù)訪問(wèn)數(shù)據(jù)庫(kù),或者包含文件),并且將結(jié)果以HTML(或者XML)頁(yè)面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。2,生成可重用的組件絕大多數(shù)JSP頁(yè)面依賴于可重用的,跨平臺(tái)的組件(JavaBeans或者EnterpriseJavaBeansTM組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開(kāi)發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團(tuán)體所使用?;诮M件的方法加速了總體開(kāi)發(fā)過(guò)程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開(kāi)發(fā)努力中得到平衡。3,采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)Web頁(yè)面開(kāi)發(fā)人員不會(huì)都是熟悉腳本語(yǔ)言的編程人員。JavaServerPage技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識(shí)能夠訪問(wèn)和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時(shí)的功能。通過(guò)開(kāi)發(fā)定制化標(biāo)識(shí)庫(kù),JSP技術(shù)是可以擴(kuò)展的。今后,第三方開(kāi)發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識(shí)庫(kù)。這使得Web頁(yè)面開(kāi)發(fā)人員能夠使用熟悉的工具和如同標(biāo)識(shí)一樣的執(zhí)行特定功能的構(gòu)件來(lái)工作。將內(nèi)容的生成和顯示進(jìn)行分離與SERVLETS相比,JSP能提供所有SERVLETS功能,但它比用println書(shū)寫(xiě)和修改HTML更方便。此外,你可以更明確的進(jìn)行分工,WEB頁(yè)面設(shè)計(jì)人員編寫(xiě)HTML,只需要留出地方讓SERVLETS程序員插入動(dòng)態(tài)部分即可。由于JSP頁(yè)面的內(nèi)置腳本語(yǔ)言是基于Java編程語(yǔ)言的,而且所有的JSP頁(yè)面都被編譯成為Java Servlet,JSP頁(yè)面就具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言“一次編寫(xiě),各處運(yùn)行”的特點(diǎn)。隨著越來(lái)越多的供應(yīng)商將JSP支持添加到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,更改工具或服務(wù)器并不影響當(dāng)前的應(yīng)用。2.2數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)WWW是基于瀏覽器/服務(wù)器結(jié)構(gòu)的,它采用TCP/IP通信協(xié)議和WWW技術(shù)集成已有的各類系統(tǒng),從而把傳統(tǒng)的客戶/服務(wù)器模式中的服務(wù)器分成了一個(gè)Web服務(wù)器和多個(gè)數(shù)據(jù)庫(kù)服務(wù)器。但隨著Internet的發(fā)展,靜態(tài)Web站點(diǎn)的開(kāi)發(fā)與維護(hù)變得越來(lái)越困難,其最大的問(wèn)題就是缺少交互性,信息的內(nèi)容只有在網(wǎng)站管理人員更改后才能發(fā)生變化,使得Web****不得不頻繁修改他們的網(wǎng)頁(yè)。為了向網(wǎng)絡(luò)用戶提供大量有用的、動(dòng)態(tài)的和可交互的信息,凡是能夠數(shù)據(jù)庫(kù)化的內(nèi)容,應(yīng)盡量做成數(shù)據(jù)庫(kù)的形式,因?yàn)閿?shù)據(jù)庫(kù)形式的數(shù)據(jù)遠(yuǎn)比其他形式的數(shù)據(jù)要容易更新與管理。基于Web的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)是指:在客戶端安裝Web瀏覽器,作為用戶輸入查詢條件和顯示查詢結(jié)果的交互界面。用戶可以通過(guò)填寫(xiě)表格或輸入關(guān)鍵字的方式來(lái)與WWW進(jìn)行交互,當(dāng)用戶單擊表格上的按鈕時(shí),表格中的數(shù)據(jù)便發(fā)送到Web服務(wù)器。Web服務(wù)器介于Web瀏覽器與數(shù)據(jù)庫(kù)服務(wù)器之間,負(fù)責(zé)用戶輸入信息的接收。服務(wù)器將數(shù)據(jù)傳送至要被處理的腳本或應(yīng)用程序,并在數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)或?qū)?shù)據(jù)投遞到數(shù)據(jù)庫(kù)中。最后,服務(wù)器將返回結(jié)果插入到HTML頁(yè)面,傳送至客戶端以響應(yīng)用戶。這種交互性提高了用戶參與的積極性。數(shù)據(jù)庫(kù)引擎是Web數(shù)據(jù)庫(kù)站點(diǎn)最重要的組成部分之一。當(dāng)我們?cè)u(píng)價(jià)一個(gè)Web數(shù)據(jù)庫(kù)引擎的時(shí)候,首先應(yīng)考慮多用戶問(wèn)題,也就是說(shuō),數(shù)據(jù)庫(kù)必須能夠支持多個(gè)并發(fā)用戶的訪問(wèn)。另外,所建立的Web數(shù)據(jù)庫(kù)應(yīng)是關(guān)系型的。關(guān)系數(shù)據(jù)庫(kù)是一種功能完善、運(yùn)行可靠的數(shù)據(jù)庫(kù)系統(tǒng),目前大多數(shù)的商業(yè)應(yīng)用都主要依賴于這種系統(tǒng),如SQLServer、Sybase和Oracle等。在另一方面,關(guān)系數(shù)據(jù)庫(kù)支持的是一個(gè)相當(dāng)標(biāo)準(zhǔn)的特性集。所有產(chǎn)品都以一個(gè)非常容易理解的標(biāo)準(zhǔn)語(yǔ)言為基礎(chǔ),即SQL/92語(yǔ)言規(guī)范。所以在Web數(shù)據(jù)庫(kù)系統(tǒng)中,采用何種RBMS(關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))都沒(méi)有什么關(guān)系,因?yàn)樗鼈兌甲袷赝粋€(gè)標(biāo)準(zhǔn)。從技術(shù)發(fā)展的角度來(lái)看,以前通過(guò)瀏覽器訪問(wèn)數(shù)據(jù)庫(kù)的惟一渠道是CGI方式。隨后出現(xiàn)了ISAPI、NSAPI和JDBC等技術(shù)方案,近來(lái)又流行ASP技術(shù)。下面我們對(duì)這些技術(shù)逐一進(jìn)行分析。一、CGI技術(shù)CGI(CommonGatewayInterface)是外部應(yīng)用程序與Web服務(wù)器交互的一個(gè)標(biāo)準(zhǔn)接口。CGI應(yīng)用程序可以完成客戶端與服務(wù)器的交互操作。它打破了服務(wù)器軟件的局限性,允許用戶根據(jù)需要采用各種語(yǔ)言去實(shí)現(xiàn)無(wú)法用HTTP、HTML實(shí)現(xiàn)的功能,給WWW提供了更為廣闊的應(yīng)用空間。例如,一個(gè)能夠訪問(wèn)外部數(shù)據(jù)庫(kù)的CGI程序可以使客戶端用戶通過(guò)Web服務(wù)器進(jìn)行數(shù)據(jù)庫(kù)的查詢。同時(shí),CGI也為在不同的平臺(tái)之間進(jìn)行溝通提供了范例。遵循CGI標(biāo)準(zhǔn)編寫(xiě)的服務(wù)器端的可執(zhí)行程序稱為CGI程序。CGI最大的用處之一在于其與瀏覽Web站點(diǎn)的用戶之間的交互能力,使信息網(wǎng)關(guān)、反饋機(jī)制、訪問(wèn)數(shù)據(jù)庫(kù)、訂閱和查詢等一系列靈活復(fù)雜的操作得以實(shí)現(xiàn)。通過(guò)這個(gè)公共網(wǎng)關(guān)界面,服務(wù)器可以向CGI程序發(fā)送信息,CGI程序也可以向服務(wù)器回送信息。使用CGI實(shí)現(xiàn)Web與數(shù)據(jù)庫(kù)的互連,最大的優(yōu)點(diǎn)在于其通用性。目前幾乎所有的HTTP服務(wù)器都支持CGI。CGI程序與服務(wù)器、客戶機(jī)的關(guān)系及遵守的協(xié)議和標(biāo)準(zhǔn)可用圖1來(lái)說(shuō)明。首先,客戶端根據(jù)某資源的URL向WebServer提出請(qǐng)求,WebServer的HTTPDaemon(守護(hù)進(jìn)程)將此請(qǐng)求的參數(shù)通過(guò)標(biāo)準(zhǔn)輸入stdin和環(huán)境變量(EnvironmentVariable)傳遞給指定的CGI程序,并啟動(dòng)此應(yīng)用程序進(jìn)行處理。處理結(jié)果通過(guò)標(biāo)準(zhǔn)輸出stdout返回給HTTPDaemon進(jìn)程,再由HTTPDaemon進(jìn)程返回給客戶端,由瀏覽器負(fù)責(zé)解釋執(zhí)行,將最終結(jié)果顯示在用戶面前。CGI程序的執(zhí)行一般有兩種調(diào)用方式:一是通過(guò)URL直接調(diào)用,在瀏覽器的URL欄里直接寫(xiě)入上述地址就可以調(diào)用該程序;另一種方式,也是主要的方式,是通過(guò)交互式主頁(yè)中的FORM欄調(diào)用,通常都是用戶在填完一張輸入信息主頁(yè)后按〃確認(rèn)〃按鈕啟動(dòng)CGI程序。主頁(yè)的交互一般都是這樣調(diào)用CGI來(lái)完成的。從編程語(yǔ)言的角度講,CGI只是一個(gè)普通的程序,只不過(guò)其輸入、輸出的處理比較特殊,只要能達(dá)到交互的目的,CGI程序可以使用Perl、C、C++,FORTRAN和數(shù)據(jù)庫(kù)語(yǔ)言等任何能夠形成可執(zhí)行程序的語(yǔ)言編寫(xiě)。WinCGI是由標(biāo)準(zhǔn)CGI演變而來(lái)的。WinCGI允許作為應(yīng)用程序運(yùn)行的服務(wù)器使用Windows應(yīng)用程序的服務(wù),包括VisualBasic程序。使用這個(gè)界面,一個(gè)以WinCGI為基礎(chǔ)的程序是從磁盤(pán)文件中讀取信息而不是從環(huán)境變量或標(biāo)準(zhǔn)輸入中讀取,并且把得出的最后數(shù)據(jù)寫(xiě)到文件中而不是寫(xiě)到標(biāo)準(zhǔn)輸出中。CGI的跨平臺(tái)性能極佳,幾乎可以在任何操作系統(tǒng)上實(shí)現(xiàn),如DOS、Windows、Unix、OS/2、Macintosh等。CGI的缺點(diǎn)也是顯而易見(jiàn)的:CGI的應(yīng)用程序一般都是一個(gè)獨(dú)立的可執(zhí)行程序,與Web服務(wù)器各自占據(jù)著不同的進(jìn)程,而且一般一個(gè)CGI程序只能處理一個(gè)用戶請(qǐng)求。每當(dāng)有一個(gè)用戶請(qǐng)求,就會(huì)激活一個(gè)CGI進(jìn)程。當(dāng)用戶請(qǐng)求數(shù)量非常多時(shí),大量的CGI程序就會(huì)大量擠占系統(tǒng)的資源,如內(nèi)存、CPU時(shí)間等,造成CGI運(yùn)行效率低下。另外CGI的功能有限、開(kāi)發(fā)較為復(fù)雜,且不具備事務(wù)處理(Transaction)功能,這在一定程度上限制了它的應(yīng)用。二、ISAPI數(shù)據(jù)庫(kù)程序的一個(gè)關(guān)鍵組件是數(shù)據(jù)庫(kù)API(ApplicationProgramInterface)o每個(gè)數(shù)據(jù)庫(kù)引擎都帶有一系列庫(kù)(如WindowsNT下使用的動(dòng)態(tài)鏈接庫(kù))。只有通過(guò)這種庫(kù),應(yīng)用程序才能連接和使用數(shù)據(jù)庫(kù)引擎。對(duì)于特定的數(shù)據(jù)庫(kù)產(chǎn)品,應(yīng)用程序?qū)?dòng)態(tài)鏈接庫(kù)的調(diào)用是專用的。根據(jù)定義,每種數(shù)據(jù)庫(kù)系統(tǒng)都有屬于自己的專有調(diào)用接口,例如對(duì)SQLServer設(shè)計(jì)的API程序,就不能用它訪問(wèn)Oracle或Informix數(shù)據(jù)庫(kù)。Web服務(wù)器的供應(yīng)商為了擴(kuò)展服務(wù)器的性能,各自開(kāi)發(fā)了API應(yīng)用程序接口來(lái)取代CGI。目前最流行的兩種API是Microsoft的ISAPI和Netscape的NSAPI,這兩種接口允許我們以標(biāo)準(zhǔn)方式編寫(xiě)Web服務(wù)器交互的應(yīng)用程序。其中對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的功能主要是以IDC文件形式提供給客戶的,在IDC文件中定義了數(shù)據(jù)源、返回的模板以及動(dòng)態(tài)的SQL語(yǔ)句。ISAPI是Microsoft提供的一套面向Internet服務(wù)的API接口,用它編制的程序以動(dòng)態(tài)鏈接庫(kù)(DLL)的形式存在,可實(shí)現(xiàn)CGI程序所能提供的全部功能。ISAPI的工作原理和CGI大體上是相同的,都是通過(guò)交互式主頁(yè)取得用戶輸入信息,然后交服務(wù)器后臺(tái)處理。但是二者在實(shí)現(xiàn)機(jī)制上大相徑庭。ISAPI與CGI最大的區(qū)別在于:在ISAPI下建立的應(yīng)用程序都是以動(dòng)態(tài)鏈接庫(kù)的形式存在的;而CGI的應(yīng)用程序一般都是可執(zhí)行程序。在ISAPI調(diào)用方式中,被用戶激活的DLL和WWW服務(wù)處于同一進(jìn)程中,在處理完某個(gè)用戶的請(qǐng)求后不會(huì)馬上消失,而是和WWW服務(wù)器一起繼續(xù)駐留在內(nèi)存中,等待處理其他用戶的HTTP請(qǐng)求,直到過(guò)了指定時(shí)間后一直沒(méi)有用戶輸入為止?;贗SAPI的所有進(jìn)程都可以獲得HTTPServer上的任何資源,而且當(dāng)它調(diào)用外部CGIScript時(shí),需要的開(kāi)銷也較單純的CGI少。因此ISAPI的運(yùn)行效率要顯著高于CGI程序。ISAPI的工作過(guò)程如圖2所示。圖2通過(guò)ISAPI接口訪問(wèn)Web數(shù)據(jù)庫(kù)由于開(kāi)發(fā)ISAPI應(yīng)用要用到Microsoft的一套API,所以能用來(lái)開(kāi)發(fā)ISAPI應(yīng)用的語(yǔ)言不如CGI多,主要有VisualC++4.1以上版本,也可以使用VisualBasic5.0、BorlandC++5.0等。ISAPI可以用來(lái)寫(xiě)Web服務(wù)器(如IIS)的OLE服務(wù)器擴(kuò)展和過(guò)濾器,例如VisualC++5.0MFC提供了5個(gè)類(CHttpServer、CHttpServerContext、CHtmlStream、CHttpFiler、CHttpServerFilter)用來(lái)寫(xiě)ISAPI應(yīng)用。三、ODBCAPI方法與Web服務(wù)器結(jié)合緊密,所以性能較高。但是利用底層的API開(kāi)發(fā)數(shù)據(jù)庫(kù)訪問(wèn)程序仍然很困難,因此一般使用基于底層API的高層數(shù)據(jù)庫(kù)編程接口,這就是我們所說(shuō)的ODBC°ODBC是〃開(kāi)放數(shù)據(jù)庫(kù)互連〃的簡(jiǎn)稱,是一種使用SQL的應(yīng)用程序接口(API)。ODBC一個(gè)最顯著的優(yōu)點(diǎn)是用它生成的程序與數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)引擎是無(wú)關(guān)的。ODBC可使程序員方便地編寫(xiě)訪問(wèn)各DBMS廠商的數(shù)據(jù)庫(kù)的應(yīng)用程序,而不需了解其產(chǎn)品的細(xì)節(jié)。Web服務(wù)器通過(guò)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序ODBC向數(shù)據(jù)庫(kù)服務(wù)器發(fā)出SQL請(qǐng)求,數(shù)據(jù)庫(kù)服務(wù)器接到的是標(biāo)準(zhǔn)的SQL查詢語(yǔ)句,數(shù)據(jù)管理系統(tǒng)執(zhí)行SQL查詢并將查詢結(jié)果再通過(guò)ODBC傳回Web服務(wù)器。許多服務(wù)器擴(kuò)展程序使用包含ODBC層的系統(tǒng)結(jié)構(gòu)。ODBC是為調(diào)用關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一途徑的一類API,由于它適用于許多不同的數(shù)據(jù)庫(kù)產(chǎn)品,因此是服務(wù)器擴(kuò)展程序開(kāi)發(fā)者們理所當(dāng)然的選擇。MicrosoftDeveloperStudio為大多數(shù)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)格式提供了32位ODBC驅(qū)動(dòng)器。這些標(biāo)準(zhǔn)數(shù)據(jù)格式包括有SQLServer、Access、Paradox、dBase、FoxPro、Excel、Oracle以及MicrosoftText。如果用戶希望使用其他數(shù)據(jù)格式,則需要安裝相應(yīng)的ODBC驅(qū)動(dòng)器及DBMS。用戶使用自己的DBMS數(shù)據(jù)庫(kù)管理功能生成新的數(shù)據(jù)庫(kù)模式后,就可以使用ODBC來(lái)登錄數(shù)據(jù)源。對(duì)用戶的應(yīng)用程序來(lái)說(shuō),只要安裝有驅(qū)動(dòng)程序,就能注冊(cè)很多不同的數(shù)據(jù)庫(kù)。四、JDBCJava語(yǔ)言顯示出優(yōu)于以往編程語(yǔ)言的諸多特色,贏得了眾多數(shù)據(jù)庫(kù)廠商的支持。為了同時(shí)連接到多個(gè)數(shù)據(jù)庫(kù)進(jìn)行并行的聯(lián)合查詢,可以充分利用Java語(yǔ)言本身的特色。由于Java是一種面向?qū)ο蟮摹⒍嗑€程的網(wǎng)絡(luò)編程語(yǔ)言,因此能夠用多個(gè)線程對(duì)應(yīng)多個(gè)不同的數(shù)據(jù)庫(kù)進(jìn)行查詢操作。用戶發(fā)出的同一條查詢語(yǔ)句同時(shí)啟動(dòng)多個(gè)線程,并行運(yùn)行,同時(shí)進(jìn)行異構(gòu)數(shù)據(jù)庫(kù)的聯(lián)合查詢。在數(shù)據(jù)庫(kù)處理方面,Java提供了JDBC(Java數(shù)據(jù)庫(kù)連接:JavaDatabaseConnectivity),為數(shù)據(jù)庫(kù)開(kāi)發(fā)應(yīng)用提供了標(biāo)準(zhǔn)的應(yīng)用程序編程接口。與ODBC類似,JDBC也是一種特殊的API,是用于執(zhí)行SQL語(yǔ)句的Java應(yīng)用程序接口(JavaAPI),它規(guī)定了Java如何與數(shù)據(jù)庫(kù)進(jìn)行交互作用。JDBC由一組用Java語(yǔ)言寫(xiě)的類和接口組成,利用Java機(jī)制設(shè)計(jì)的標(biāo)準(zhǔn)SQL數(shù)據(jù)庫(kù)連接接口JDBC去訪問(wèn)數(shù)據(jù)庫(kù)。JDBC也是一種規(guī)范,其宗旨是讓各數(shù)據(jù)庫(kù)開(kāi)發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)訪問(wèn)類和接口。JDBC與Java結(jié)合,使用戶很容易地把SQL語(yǔ)句傳送到任何關(guān)系數(shù)據(jù)庫(kù)中,程序員用它編寫(xiě)的數(shù)據(jù)庫(kù)應(yīng)用軟件,可在各種數(shù)據(jù)庫(kù)系統(tǒng)上運(yùn)行。采用JDBC可以很容易用SQL語(yǔ)句訪問(wèn)任何商用數(shù)據(jù)庫(kù)(或稱異構(gòu)數(shù)據(jù)庫(kù)),如SQLServer,Sybase或Oracle。采用Java和JDBC編寫(xiě)的數(shù)據(jù)庫(kù)應(yīng)用程序具有與平臺(tái)無(wú)關(guān)的特性,很容易用SQL語(yǔ)句訪問(wèn)任何商用數(shù)據(jù)庫(kù),而不必為每一種數(shù)據(jù)庫(kù)平臺(tái)編寫(xiě)不同的程序。JDBC訪問(wèn)數(shù)據(jù)庫(kù)的過(guò)程是:首先用戶的瀏覽器連接到Web服務(wù)器上,下載含有Java小程序的HTML頁(yè),Java小程序在客戶端運(yùn)行,使用JDBC接口,繞過(guò)Web服務(wù)器,直接與數(shù)據(jù)庫(kù)服務(wù)器交互,并直接把查詢結(jié)果的HTML頁(yè)返回到瀏覽器。與ODBC一樣,JDBC提供給程序員的編程接口由兩部分組成,即面向應(yīng)用的編程接口JDBCAPI和供底層開(kāi)發(fā)的驅(qū)動(dòng)程序接口JDBCDriverAPI。JDBCAPI是為應(yīng)用程序員提供的,是一系列抽象的接口,它使得應(yīng)用程序員能夠進(jìn)行數(shù)據(jù)庫(kù)連接,執(zhí)行SQL查詢,并且得到返回結(jié)果。而JDBCDriverAPI則是為數(shù)據(jù)庫(kù)廠商提供的編程接口。基于Java的JDBC發(fā)展迅速。Sun承諾任何JavaApplet或者Java應(yīng)用軟件都能夠與數(shù)據(jù)庫(kù)結(jié)合。由于JDBC利用了Java的跨平臺(tái)特色,因此,它成為Intranet和Internet環(huán)境下訪問(wèn)異構(gòu)數(shù)據(jù)庫(kù)的一種較優(yōu)方式。五、方案比較與結(jié)論CGI根據(jù)瀏覽器端的http請(qǐng)求激活相應(yīng)進(jìn)程,每一個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)進(jìn)程。當(dāng)同時(shí)有很多請(qǐng)求時(shí),程序擠占系統(tǒng)資源,造成效率低下。ISAPI針對(duì)這一缺點(diǎn)進(jìn)行改進(jìn),利用DLL(動(dòng)態(tài)鏈接庫(kù))技術(shù),以線程代替進(jìn)程,提高了性能和速度,但要考慮線程的同步問(wèn)題,而且開(kāi)發(fā)步驟煩瑣。這兩種技術(shù)還存在另外一個(gè)問(wèn)題,那就是開(kāi)發(fā)困難。程序的開(kāi)發(fā)和HTML寫(xiě)作是兩個(gè)完全不同的過(guò)程,需要專門(mén)的程序員開(kāi)發(fā)。而另一些較簡(jiǎn)單的開(kāi)發(fā)技術(shù)如JavaScript和IDC(InternetDatabaseConnector)等功能有限。Microsoft的ODBCAPI是使用最廣泛的訪問(wèn)數(shù)據(jù)庫(kù)規(guī)范。ODBC2.0訪問(wèn)數(shù)據(jù)庫(kù)時(shí)存在同步與異步執(zhí)行模式之分,如果設(shè)計(jì)不當(dāng),則易發(fā)生系統(tǒng)故障甚至系統(tǒng)死鎖。但是同步執(zhí)行模式可以簡(jiǎn)化程序編制的復(fù)雜性。程序員不用過(guò)多地了解較復(fù)雜的ODBC2.0API的使用,而只需使用ODBC的同步執(zhí)行模式或使用數(shù)據(jù)控制項(xiàng)和數(shù)據(jù)庫(kù)對(duì)象變量來(lái)編寫(xiě)應(yīng)用程序,可以提高開(kāi)發(fā)效率,但程序運(yùn)行速度比不上異步執(zhí)行模式的速度。JDBC保持了ODBC的基本特性。兩者都基于X/OpenSQL調(diào)用級(jí)接口(CLI:CallLevelInterface)標(biāo)準(zhǔn)。它們的不同就在于JDBC建立在Java語(yǔ)言基礎(chǔ)上,并充分利用了其特色,易于使用;ODBC使用的是C界面,C語(yǔ)言大量使用了Java語(yǔ)言中沒(méi)有的指針功能,不適于以Java為界面的JDBC直接使用。同時(shí),JDBC確保了〃100%純Java〃的解決方案。這樣,JDBC應(yīng)用無(wú)需像ODBC應(yīng)用那樣要進(jìn)行客戶機(jī)的安裝和管理。以上這些方案,從Intranet的技術(shù)實(shí)現(xiàn)來(lái)衡量,它們?nèi)圆贿m用于快速開(kāi)發(fā)、及時(shí)維護(hù)和大面積的技術(shù)普及。ASP技術(shù)的出現(xiàn),使動(dòng)態(tài)交互式Web主頁(yè)設(shè)計(jì)成為一件輕松愉快的事。只要幾行腳本語(yǔ)句,就能將后臺(tái)的數(shù)據(jù)庫(kù)信息發(fā)布到Internet/Intranet上,在編程和網(wǎng)頁(yè)腳本的可讀性方面大大優(yōu)于傳統(tǒng)的技術(shù)方案。ASP提供了更方便、更簡(jiǎn)單的數(shù)據(jù)庫(kù)訪問(wèn)方法,使開(kāi)發(fā)基于數(shù)據(jù)驅(qū)動(dòng)的Web應(yīng)用程序更加容易??傊?在瀏覽器中訪問(wèn)Web數(shù)據(jù)庫(kù)的方法較多,開(kāi)發(fā)Web應(yīng)用程序的軟件人員需要選擇適當(dāng)?shù)姆椒?但有些方法的編程接口較為復(fù)雜,妨礙了它的進(jìn)一步應(yīng)用。作為Web頁(yè)****,更希望把精力集中在信息發(fā)布或程序設(shè)計(jì)本身,而不愿意在接口方面耗費(fèi)太多的精力。2.3ADOADO(ActiveXDataObjects)是微軟公司提供給網(wǎng)頁(yè)開(kāi)發(fā)者在網(wǎng)頁(yè)中存取數(shù)據(jù)庫(kù)的最新技術(shù),它也是ASP內(nèi)置的重要組件,ADO主要的目的是為了存取或修改數(shù)據(jù)源的數(shù)據(jù)、或增加數(shù)據(jù)到指定的數(shù)據(jù)源,數(shù)據(jù)源不僅包括數(shù)據(jù)庫(kù),而且包括dBase、Excel、Foxpro、Access或文本文件等一些小型的數(shù)據(jù)表,所以,只要是ODBC驅(qū)動(dòng)程序所能存取的數(shù)據(jù)源皆是 ADO存取的對(duì)象。ADO主要是由Connection對(duì)象、Command對(duì)象、Parameter對(duì)象、Recordset對(duì)象、Field對(duì)象、Property對(duì)象及Error對(duì)象等七個(gè)對(duì)象與Fields數(shù)據(jù)集合、Properties數(shù)據(jù)集合、Parameters數(shù)據(jù)集合及Errors數(shù)據(jù)集合等四個(gè)數(shù)據(jù)集合所組合而成

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論