唐金藝
摘要:該文將基于數(shù)據(jù)庫應(yīng)用的Web開發(fā)從三層邏輯體系結(jié)構(gòu)(客戶層、中間層、數(shù)據(jù)庫層)的角度分析,闡述了各層的組成、實(shí)現(xiàn)功能和工作方式。
關(guān)鍵詞:三層結(jié)構(gòu);Web開發(fā);瘦客戶;DBMS
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)07-1490-03
Analysis of WEB Architecture Based on Database Application
TANG Jin-yi
(Computing Technology Institute of Navy, Beijing 100841, China)
Abstract: In this paper, it is analysed WEB developing based on database application from three layer logical architecture including client layer, middle layer and database layer. And the composing, function and work model of each layer are also explained.
Key words: three layer architecture; web developing; slim client; DBMS
隨著Web的誕生直至發(fā)展到今天,大量高效的服務(wù)是通過存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)展現(xiàn)在Web站點(diǎn)上的?;跀?shù)據(jù)庫應(yīng)用的Web站點(diǎn)案例包括大型數(shù)據(jù)信息的檢索、電子商務(wù)、電子政務(wù)和金融服務(wù)等各種行業(yè)。支撐此技術(shù)的主要原因在于其便宜且普遍存在的互聯(lián)網(wǎng)絡(luò),這些用戶使用標(biāo)準(zhǔn)的Web瀏覽器軟件并運(yùn)行在各種普通的計(jì)算機(jī)上;而對(duì)于開發(fā)者而言,可以方便的獲得Web服務(wù)器軟件,數(shù)種完善且強(qiáng)大的腳本編程語言可以幫助其方便的開發(fā)于Web服務(wù)器和Web協(xié)議一起使用的應(yīng)用程序。
數(shù)據(jù)庫應(yīng)用于Web的整合基本上可以理解為是通過三層邏輯來完成的,頂層是應(yīng)用程序接口的客戶端Web瀏覽器,最底層是DBMS(Data-Base Management System數(shù)據(jù)庫管理系統(tǒng))和數(shù)據(jù)庫,中間層是通過腳本語言開發(fā)的應(yīng)用邏輯。
1三層邏輯體系結(jié)構(gòu)
建立Web數(shù)據(jù)庫應(yīng)用程序是由客戶層、中間層、數(shù)據(jù)庫層三層邏輯體系結(jié)構(gòu)模型構(gòu)成(如圖1所示)。位于底層的數(shù)據(jù)庫層包含數(shù)據(jù)庫和管理數(shù)據(jù)庫的DBMS組成,可以實(shí)現(xiàn)用戶創(chuàng)建、刪除、修改和查詢數(shù)據(jù)的工作;數(shù)據(jù)庫層上面是中間層,其中包含大部分應(yīng)用邏輯并在其他兩層間進(jìn)行數(shù)據(jù)通信;頂層是客戶層,通常是與應(yīng)用程序交互Web瀏覽器軟件。
圖1三層邏輯體系結(jié)構(gòu)圖
從具體實(shí)現(xiàn)的角度看,完成Web的工作是由3個(gè)標(biāo)準(zhǔn)的工具:HTML(Hypertext Markup Language超文本標(biāo)記語言)、HTTP(Hypertext Transfer Protocol超文本傳輸協(xié)議)和TCP/IP協(xié)議組成的。HTML能夠使用Web瀏覽器應(yīng)用程序很好地結(jié)構(gòu)化和表示信息。TCP/IP是一個(gè)有效的聯(lián)網(wǎng)協(xié)議,它通過互聯(lián)網(wǎng)在應(yīng)用程序間傳輸數(shù)據(jù),且對(duì)于Web數(shù)據(jù)庫應(yīng)用的開發(fā)者來說是完全透明的。建立Web數(shù)據(jù)庫應(yīng)用過程中要解決的問題是如何使用HTTP將數(shù)據(jù)庫應(yīng)用程序與Web連接起來。
1.1 HTTP
三層邏輯體系結(jié)構(gòu)為Web數(shù)據(jù)庫應(yīng)用提出了一個(gè)概念上的框架。Web本身提供連接應(yīng)用程序的客戶層和中間層的協(xié)議和網(wǎng)絡(luò),也就是說是由HTTP提供了瀏覽器到服務(wù)器的連接。HTTP是一個(gè)將三層邏輯體系結(jié)構(gòu)綁定在一起的組件。HTTP協(xié)議由Web瀏覽器請(qǐng)求來自Web服務(wù)器的資源,并用于Web服務(wù)器返回響應(yīng)。
1.2狀態(tài)
傳統(tǒng)的數(shù)據(jù)庫應(yīng)用程序是有狀態(tài)的,而HTTP是無狀態(tài)的。無狀態(tài)意味著Web瀏覽器和Web服務(wù)器之間的交互是完全獨(dú)立的。因?yàn)镠TTP是無狀態(tài)的,因此很難開發(fā)有狀態(tài)的Web數(shù)據(jù)庫應(yīng)用。這時(shí)需要一個(gè)在HTTP中維護(hù)狀態(tài)的方法,以便可以利用信息流和結(jié)構(gòu)。通常的解決辦法是在Web瀏覽器和Web服務(wù)器中間互換一個(gè)唯一識(shí)別用戶及會(huì)話的記號(hào)(Token)。
1.3瘦客戶
已知以三層邏輯體系結(jié)構(gòu)建立的Web數(shù)據(jù)庫應(yīng)用不能很好的適應(yīng)HTTP,那為什么還要使用該模型呢?原因就在于Web瀏覽器是瘦客戶??蛻魧又邪^少的應(yīng)用邏輯,最大限度減少客戶端的邏輯處理。瀏覽器只是簡(jiǎn)單地發(fā)送對(duì)資源的HTTP請(qǐng)求和顯示服務(wù)端的響應(yīng)。三層模型意味著客戶層無需建立、安裝或配置。任何具有Web瀏覽器的用戶都可以使用整合了數(shù)據(jù)庫應(yīng)用的Web程序。而不必像厚客戶那樣在兩層邏輯體系結(jié)構(gòu)模式下安裝附加的軟件、使用特定的操作系統(tǒng)或使用特殊的硬件平臺(tái)。也就是說一個(gè)應(yīng)用程序可以提供給大量的、不同地理位置的分散用戶。這種瘦客戶的Web瀏覽器體系結(jié)構(gòu)可以很好的適應(yīng)三層邏輯體系結(jié)構(gòu)。
2客戶層
三層邏輯體系結(jié)構(gòu)中的客戶層通常是Web瀏覽器,Web瀏覽器軟件處理并顯示HTML資源,向服務(wù)端發(fā)出對(duì)資源的HTTP請(qǐng)求,并處理HTTP響應(yīng)。正如前面所討論的,使用Web瀏覽器作為瘦客戶層有著顯著的優(yōu)點(diǎn),包括簡(jiǎn)易的部署和在更廣范圍的多平臺(tái)支持。
可用的瀏覽器產(chǎn)品有很多,而每種瀏覽器都有各自不同的特征?,F(xiàn)在被廣泛使用的兩種瀏覽器是Netscape和Internet Explorer。它們共同的基本特征:
1)發(fā)送請(qǐng)求并顯示來自Web服務(wù)器的響應(yīng)(通常在圖形界面下);
2)呈現(xiàn)頁面時(shí)解釋有HTML標(biāo)記的頁面(包括標(biāo)題、正文、圖像、超文本)
3)可以將CSS(Cascading Style Sheet層疊樣式表)應(yīng)用到HTML頁面上
4)支持圖像、電影、聲音等其他類型對(duì)象
5)可以運(yùn)行嵌入在HTML頁面里的腳本語言(如:VBScript JavaScript)代碼
6)可以運(yùn)行用Java或ActiveX編程語言開發(fā)的組件
3中間層
在多數(shù)的三層邏輯體系結(jié)構(gòu)中,大部分的應(yīng)用邏輯都是在中間層完成的。客戶層向用戶展示數(shù)據(jù),并收集來自用戶的數(shù)據(jù),數(shù)據(jù)庫層保存獲取的數(shù)據(jù)。剩下的工作都是由中間層完成的。它驅(qū)動(dòng)顯示給用戶的數(shù)據(jù)的結(jié)構(gòu)和內(nèi)容,并且將來自用戶的輸入處理為數(shù)據(jù)庫上的查詢,以讀取或?qū)懭霐?shù)據(jù)。它還將狀態(tài)管理添加到HTTP協(xié)議。中間層是將Web頁面和DBMS整合在一起。
具體的說,中間層的組件基本可以理解為Web服務(wù)器、Web腳本編程語言和腳本編程語言引擎。Web服務(wù)器處理HTTP請(qǐng)求并解析為客戶端的響應(yīng)。Web服務(wù)器監(jiān)聽網(wǎng)絡(luò)上的HTTP請(qǐng)求、接收由客戶端的Web瀏覽器發(fā)出的HTTP請(qǐng)求或其他服務(wù)請(qǐng)求,然后返回包含所請(qǐng)求的資源的HTTP響應(yīng)。
4數(shù)據(jù)庫層
數(shù)據(jù)庫層是管理數(shù)據(jù)的。數(shù)據(jù)管理通常包括數(shù)據(jù)的存儲(chǔ)和查詢,以及更新、管理允許多個(gè)中間層進(jìn)程的同步或并行訪問、提供安全性、確保數(shù)據(jù)的完整性和提供數(shù)據(jù)備份等支持技術(shù)。在許多Web數(shù)據(jù)庫應(yīng)用中,這些服務(wù)是由DBMS系統(tǒng)提供的,并且數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中。當(dāng)然對(duì)于數(shù)據(jù)庫層存儲(chǔ)數(shù)據(jù),還有非關(guān)型的DBMS軟件可以選擇,包括搜索引擎和簡(jiǎn)單的網(wǎng)關(guān)服務(wù)等。
管理關(guān)系型數(shù)據(jù)需要復(fù)雜的DBMS軟件。但是多數(shù)的DBMS系統(tǒng)都設(shè)計(jì)為隱藏了軟件的復(fù)雜性,因?yàn)槠湓O(shè)計(jì)的透明性,對(duì)于理解DBMS的基礎(chǔ)體系結(jié)構(gòu)并不重要。要有效的使用DBMS,需要一些技能來設(shè)計(jì)數(shù)據(jù)庫,并公式化DBMS的命令和查詢。絕大多數(shù)的DBMS軟件都是選擇SQL作為查詢語言。
DBMS系統(tǒng)主要用于存儲(chǔ)、搜索和管理數(shù)據(jù)。數(shù)據(jù)庫是一個(gè)相關(guān)數(shù)據(jù)的集合。存儲(chǔ)的數(shù)據(jù)可以是由幾個(gè)實(shí)體或行組成。具體的DBMS是一系列組件,用于定義、構(gòu)造和操作數(shù)據(jù)庫。
DBMS是由一下幾個(gè)組件構(gòu)成(如圖2所示)。
1)應(yīng)用程序接口
與DBMS通信的庫。多數(shù)DBMS有一個(gè)命令解釋器,它使用這些庫來延遲從鍵盤輸入給DBMS的請(qǐng)求并顯示響應(yīng)。在Web數(shù)據(jù)庫應(yīng)用中,命令行解釋器通常被中間層腳本編程語言一部分的函數(shù)庫所取代。
2)SQL解釋器
用于檢查進(jìn)來的查詢語句的語法并將這些語句轉(zhuǎn)換成內(nèi)部命令。
3)查詢計(jì)算器
通過參考數(shù)據(jù)庫統(tǒng)計(jì)和屬性為計(jì)算一個(gè)查詢生成不同的計(jì)劃,選擇其中一個(gè)計(jì)劃,并將其轉(zhuǎn)換為將要執(zhí)行的低級(jí)動(dòng)作。
4)數(shù)據(jù)訪問
圖2 DBMS組件構(gòu)成
對(duì)存儲(chǔ)在磁盤中的數(shù)據(jù)訪問進(jìn)行管理的模塊包括一個(gè)轉(zhuǎn)換管理器、恢復(fù)管理器、主存緩沖管理器、數(shù)據(jù)安全管理器,以及文件和訪問方法管理器。
5)數(shù)據(jù)庫
物理數(shù)據(jù)本身存儲(chǔ)在數(shù)據(jù)文件中。為了對(duì)數(shù)據(jù)快速的訪問,數(shù)據(jù)還包含索引文件,而數(shù)據(jù)庫和系統(tǒng)摘要統(tǒng)計(jì)主要用于查詢計(jì)劃的生成和優(yōu)化。
5結(jié)束語
隨著互聯(lián)網(wǎng)信息規(guī)模的擴(kuò)大,復(fù)雜程度的提高和高效應(yīng)用的積聚增加,基于數(shù)據(jù)庫應(yīng)用的Web技術(shù)越來越引起人們的關(guān)注。其在復(fù)雜的電子表格或文本文件關(guān)系管理;容許多用戶處理;高速訪問、安全性、數(shù)據(jù)恢復(fù)等方面為你的開發(fā)使用帶來許多意想不到的實(shí)惠。隨著該技術(shù)的不斷成熟,基于數(shù)據(jù)庫應(yīng)用的Web技術(shù)將會(huì)有廣泛的應(yīng)用背景。
參考文獻(xiàn):
[1] Date C J.數(shù)據(jù)庫系統(tǒng)導(dǎo)論[M].8版.孟小峰,王珊,姜芳艽,譯.北京:機(jī)械工業(yè)出版社,2007.
[2] Silberschatz A,Korth H F,Sudarshan S.數(shù)據(jù)庫系統(tǒng)概念[M].5版.楊冬青,馬秀莉,唐世渭,等,譯.北京:機(jī)械工業(yè)出版社,2006.