吳冬芹
(南京信息職業(yè)技術(shù)學(xué)院 數(shù)碼藝術(shù)學(xué)院,南京 210023)
將Web環(huán)境與分布式計(jì)算技術(shù)有機(jī)融合,是實(shí)現(xiàn)計(jì)算機(jī)結(jié)構(gòu)分布式應(yīng)用的關(guān)鍵。相比于傳統(tǒng)B/S結(jié)構(gòu)數(shù)據(jù)訪問模式,基于中間件的分布式數(shù)據(jù)訪問模式可實(shí)現(xiàn)對數(shù)據(jù)庫的集中控制和有效管理,同時(shí)還能提供全新的業(yè)務(wù)邏輯編寫技術(shù),以及增強(qiáng)系統(tǒng)運(yùn)行穩(wěn)定性,在實(shí)際應(yīng)用中表現(xiàn)出更強(qiáng)的優(yōu)越性?,F(xiàn)代信息管理系統(tǒng)承擔(dān)著更加多樣的功能,數(shù)據(jù)交互也更加頻繁,在這一背景下,有必要設(shè)計(jì)一種基于Web的分布式計(jì)算機(jī)結(jié)構(gòu),利用分布式數(shù)據(jù)訪問中間件來提高系統(tǒng)響應(yīng)速率、優(yōu)化系統(tǒng)運(yùn)行性能,從而更好地滿足用戶的使用需求。
從企業(yè)信息系統(tǒng)的使用需求出發(fā),基于Web的分布式應(yīng)用程序框架應(yīng)滿足以下要求:①能夠?qū)崿F(xiàn)對客戶端的用戶管理與權(quán)限控制,對客戶端的計(jì)算資源有較高的利用率;②提供至少2個(gè)編程接口,既可滿足在線編程需要,同時(shí)又能提高信息傳遞效率;③具有一定的可擴(kuò)展性,可支持HTML、ActiveX等程序語言的在線開發(fā);④具有較強(qiáng)的可靠性,使用主流的加密措施(如數(shù)字簽名等)對數(shù)據(jù)進(jìn)行加密,保障傳輸安全。基于上述需求設(shè)計(jì)了Web應(yīng)用程序框架的基本結(jié)構(gòu),如圖1所示。
圖1 分布式應(yīng)用程序框架的結(jié)構(gòu)組成
客戶端運(yùn)行環(huán)境是以用戶界面作為切入點(diǎn),向用戶提供注冊/登錄、數(shù)據(jù)訪問和軟件管理等一系列服務(wù)。為保證客戶端運(yùn)行環(huán)境的安全性,本文設(shè)計(jì)的客戶端運(yùn)行環(huán)境,是以ActiveX控件的形式,將客戶端嵌入到IE瀏覽器中。這樣一來,像用戶登錄、權(quán)限設(shè)置和訪問服務(wù)等一系列功能均可基于Web實(shí)現(xiàn),從而減輕了系統(tǒng)運(yùn)行負(fù)載,并保證了客戶端運(yùn)行環(huán)境的安全。
傳統(tǒng)的B/S結(jié)構(gòu)是在Web瀏覽器和數(shù)據(jù)庫之間建立Web服務(wù)器。Web服務(wù)器基于JSP、CGI等技術(shù)訪問數(shù)據(jù)庫,然后將結(jié)果以HTML或XML等方式反饋給Web瀏覽器。這種結(jié)構(gòu)存在諸多弊端,例如無法支持客戶端直接訪問數(shù)據(jù)庫,導(dǎo)致用戶請求響應(yīng)延時(shí)嚴(yán)重;還有就是增加開發(fā)難度和維護(hù)成本。針對上述缺陷,本文設(shè)計(jì)了一種基于中間件的分布式數(shù)據(jù)訪問模式,其結(jié)構(gòu)模型如圖2所示。
圖2 分布式數(shù)據(jù)訪問中間件結(jié)構(gòu)模型
基于該結(jié)構(gòu)模型的訪問流程如下。
(1)客戶端發(fā)出訪問請求,并在數(shù)據(jù)接口組件處生成一個(gè)數(shù)據(jù)訪問語句。數(shù)據(jù)接口組件根據(jù)語句內(nèi)容,調(diào)用相關(guān)的安全組件,并在客戶端與服務(wù)器端之間構(gòu)建一條信息傳輸通道。
(2)通道建立后,將數(shù)據(jù)訪問語句從數(shù)據(jù)接口組件傳輸?shù)竭h(yuǎn)程數(shù)據(jù)服務(wù)中心,并在成功接收該語句后,識別其業(yè)務(wù)邏輯。執(zhí)行一個(gè)判斷程序,如果判斷結(jié)果為“業(yè)務(wù)邏輯”,則調(diào)用相應(yīng)的業(yè)務(wù)邏輯腳本解析部件;如果判斷結(jié)果為其他邏輯,同樣選擇與之對應(yīng)的腳本程序進(jìn)行解析。
(3)遠(yuǎn)程數(shù)據(jù)服務(wù)中心調(diào)用數(shù)據(jù)訪問控制部件實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,數(shù)據(jù)庫在接收該訪問請求后,可根據(jù)訪問權(quán)限作出“接受”或“拒絕”的判斷。
(4)如果允許訪問,則完成相應(yīng)的數(shù)據(jù)檢索、調(diào)用等操作,并將數(shù)據(jù)訪問結(jié)果反饋給客戶端。
由于數(shù)據(jù)庫訪問是基于邏輯組件實(shí)現(xiàn)的,因此要想提升訪問效率和保證數(shù)據(jù)安全,必須要開發(fā)一種適配性更強(qiáng)的業(yè)務(wù)邏輯腳本語言。該語言可以提供面向?qū)ο蟮拈_發(fā)方法,并且能夠與數(shù)據(jù)訪問語言(如SQL等)具有較好的兼容性。基于腳本語言的業(yè)務(wù)邏輯處理流程如圖3所示。
圖3 業(yè)務(wù)邏輯處理過程
開發(fā)人員根據(jù)業(yè)務(wù)需求,用腳本語言編寫相應(yīng)的業(yè)務(wù)邏輯,然后將其注冊到分布式數(shù)據(jù)訪問中間件中。整個(gè)分布式數(shù)據(jù)訪問中間件包含了3部分,即業(yè)務(wù)邏輯訪問接口、腳本語言解析軟件和數(shù)據(jù)訪問部件。中間件在完成腳本程序的解析后,提取出面向?qū)ο蟮木幊探涌?,并通過邏輯調(diào)用的方式呈現(xiàn)給客戶端的開發(fā)人員。開發(fā)人員根據(jù)業(yè)務(wù)邏輯處理效果,重新修改腳本語言,直到業(yè)務(wù)邏輯處理結(jié)果符合預(yù)期。這種基于中間件與業(yè)務(wù)邏輯腳本語言相結(jié)合的開發(fā)模式,顯著提高了系統(tǒng)軟件開發(fā)效率。
在分布式應(yīng)用程序框架下,由于多臺客戶端均需要通過中間層服務(wù)器訪問數(shù)據(jù)庫,會加大中間層服務(wù)器的運(yùn)行負(fù)載,特別是在多個(gè)訪問請求同時(shí)發(fā)出后,很容易因?yàn)榫W(wǎng)絡(luò)堵塞而導(dǎo)致響應(yīng)延遲。為了解決這一問題,需要設(shè)計(jì)一個(gè)具有可擴(kuò)展功能的分布式數(shù)據(jù)訪問中間件。在框架模型接入的客戶端數(shù)量較少時(shí),只開放少量的訪問接口,既能滿足系統(tǒng)運(yùn)行要求,又可以節(jié)約系統(tǒng)資源。隨著接入客戶端數(shù)量的不斷增加,可以擴(kuò)展新的接口,在滿足系統(tǒng)功能需求的基礎(chǔ)上還能保證負(fù)載均分?,F(xiàn)階段可支持分布式數(shù)據(jù)訪問中間件擴(kuò)展的技術(shù)有連接池、多線程等。負(fù)載均衡(Load Balancing)是近幾年出現(xiàn)的一種新型可擴(kuò)展技術(shù),其能通過應(yīng)用系統(tǒng)分區(qū)的方式,將應(yīng)用系統(tǒng)按照不同功能分成若干個(gè)分布在不同服務(wù)器上的子系統(tǒng)??蛻魴C(jī)在發(fā)出訪問請求或服務(wù)請求后,首先進(jìn)行請求解析,然后按照“就近原則”調(diào)用最近服務(wù)器作出響應(yīng),建立會話并滿足客戶需求。
安全性也是分布式數(shù)據(jù)訪問中間件設(shè)計(jì)中需要重點(diǎn)考慮的因素之一,具體又可分為2部分,即數(shù)據(jù)訪問安全、數(shù)據(jù)傳輸安全。在數(shù)據(jù)訪問方面,可以采取將客戶端與數(shù)據(jù)庫完全獨(dú)立的設(shè)計(jì),防止用戶直接訪問數(shù)據(jù)庫。即便是用戶通過驗(yàn)證正常登錄客戶端,也必須經(jīng)由分布式數(shù)據(jù)訪問中間件向數(shù)據(jù)庫發(fā)送訪問請求的指令,并且經(jīng)過數(shù)據(jù)庫驗(yàn)證并接收該訪問請求后,方可瀏覽、調(diào)用數(shù)據(jù),從而提高訪問安全性能。在數(shù)據(jù)傳輸方面,一種措施是選擇安全性較高的數(shù)據(jù)庫,例如現(xiàn)階段通用的Oracle、Informix等,這些數(shù)據(jù)庫可以自動(dòng)對傳輸協(xié)議進(jìn)行加密,有效避免了數(shù)據(jù)傳輸過程中被第三方攔截的情況。另一種措施則是在客戶端與服務(wù)器端之間新增一條加密的數(shù)據(jù)通道,也能起到保護(hù)數(shù)據(jù)傳輸安全的效果。加密數(shù)據(jù)通道的模型如圖4所示。
圖4 利用分布式數(shù)據(jù)訪問中間件建立安全數(shù)據(jù)通道
該框架系統(tǒng)主要由數(shù)據(jù)庫、分布式數(shù)據(jù)服務(wù)模塊和用戶管理服務(wù)模塊等組成。框架系統(tǒng)數(shù)據(jù)庫為獨(dú)立的Microsoft Access數(shù)據(jù)庫,采用分區(qū)存儲模式,有系統(tǒng)信息、臨時(shí)數(shù)據(jù)和日志數(shù)據(jù)3個(gè)分區(qū),提高了數(shù)據(jù)存儲和調(diào)用效率。用戶管理服務(wù)、模塊管理服務(wù)采用集成化設(shè)置,在Web服務(wù)器的IIS中用PHP腳本語言實(shí)現(xiàn)。在IIS和客戶端運(yùn)行環(huán)境之間使用HTTP協(xié)議實(shí)現(xiàn)通信。使用IE提供的ActiveX插件,將客戶端嵌入到Web瀏覽器中,提供客戶端運(yùn)行環(huán)境。用戶通過Web瀏覽器的登錄界面,輸入對應(yīng)的賬號、密碼后,可以成功登錄客戶端主界面,該頁面提供了系統(tǒng)管理(數(shù)據(jù)庫注冊與權(quán)限分配等)、系統(tǒng)開發(fā)(開發(fā)指南與VC測試等)、用戶反饋等功能。其中,模塊管理是客戶端運(yùn)行環(huán)境的重要組成,模塊管理策略如圖5所示。
圖5 軟件模塊管理策略
用戶管理服務(wù)提供用戶登錄、用戶注冊與刪除和用戶權(quán)限管理等服務(wù);模塊管理服務(wù)提供模塊下載功能。由于2個(gè)模塊的功能實(shí)現(xiàn)都是基于數(shù)據(jù)庫中用戶和模塊信息進(jìn)行操作,因此在軟件設(shè)計(jì)中需要提供專門存儲用戶與模塊信息的數(shù)據(jù)表。以用戶信息為例,其信息表(User_Info)見表1。
表1 用戶信息表
在模塊信息表中,考慮到模塊數(shù)量較多,因此采用樹狀結(jié)構(gòu)對模塊進(jìn)行分類。例如在“系統(tǒng)開發(fā)”一項(xiàng)中,分別包含了相關(guān)文檔、開發(fā)指南和開發(fā)說明等子項(xiàng),從而顯著提高了數(shù)據(jù)處理效率和查詢效率。除此之外,還設(shè)計(jì)了“用戶-欄目權(quán)限表”,在用戶和模塊之間建立映射關(guān)系,也是提高查詢效率的一種有效措施。
中間件由服務(wù)器端的分布式數(shù)據(jù)服務(wù)(COM服務(wù))和數(shù)據(jù)訪問部件(ActiveX控件)組成,并且基于2個(gè)獨(dú)立平臺運(yùn)行。本系統(tǒng)設(shè)計(jì)中采用Delphi定義數(shù)據(jù)集的操作接口,基于TCP/IP協(xié)議實(shí)現(xiàn)中間件的通信傳輸,分布式數(shù)據(jù)訪問中間件的功能實(shí)現(xiàn)流程為:在客戶端與服務(wù)器端分別嵌入1個(gè)連接件,用于在2個(gè)端口之間建立數(shù)據(jù)訪問通道。在系統(tǒng)運(yùn)行并產(chǎn)生數(shù)據(jù)交互需求時(shí),由客戶端向服務(wù)器端發(fā)送包含SQL的訪問語句。服務(wù)器端在接收到該訪問請求后,根據(jù)SQL語句信息訪問對應(yīng)的數(shù)據(jù)庫,并從數(shù)據(jù)庫中獲取相應(yīng)的數(shù)據(jù),以CDS格式將數(shù)據(jù)封包,并以數(shù)據(jù)集形式發(fā)送給客戶端。客戶端在接收數(shù)據(jù)集的過程中,同步打開數(shù)據(jù)訪問部件與應(yīng)用軟件模塊之間的Dataset數(shù)據(jù)訪問接口,以便于應(yīng)用軟件調(diào)用數(shù)據(jù)。
為驗(yàn)證基于Web的分布式應(yīng)用程序框架系統(tǒng)的應(yīng)用性能,將設(shè)計(jì)好的框架模型應(yīng)用到某企業(yè)的生產(chǎn)運(yùn)營管理信息系統(tǒng)中,該系統(tǒng)主要包括2部分,其一是基于Web瀏覽器的網(wǎng)頁部分,包括企業(yè)簡介、公報(bào)通知、安全監(jiān)察、廉政建設(shè)和職工園地等;其二是網(wǎng)站維護(hù)部分,包括用戶及其權(quán)限管理、數(shù)據(jù)庫維護(hù)和網(wǎng)頁內(nèi)容編輯等?;赪eb分布式應(yīng)用程序框架模型的企業(yè)信息系統(tǒng)應(yīng)用效果如下。
(1)應(yīng)用軟件基于Web瀏覽器運(yùn)行,解決了傳統(tǒng)分布式應(yīng)用系統(tǒng)維護(hù)成本高、維護(hù)難度大的問題。
(2)強(qiáng)化了對用戶權(quán)限與軟件模塊的管理,避免了用戶越權(quán)訪問的情況,同時(shí)還能節(jié)約系統(tǒng)資源,提高了系統(tǒng)的安全性能。
(3)基于中間件的分布式數(shù)據(jù)訪問,提高了數(shù)據(jù)訪問與調(diào)用效率。同時(shí)保證數(shù)據(jù)庫與客戶機(jī)相互獨(dú)立,降低了數(shù)據(jù)并發(fā)時(shí)的系統(tǒng)負(fù)載,優(yōu)化了信息系統(tǒng)的運(yùn)行性能。
(4)應(yīng)用軟件與信息系統(tǒng)相互獨(dú)立,需要對應(yīng)用軟件進(jìn)行日常維護(hù)或更新升級時(shí),管理員不必重復(fù)進(jìn)行權(quán)限驗(yàn)證,可以在登錄Web瀏覽器后直接從應(yīng)用程序框架上進(jìn)行操作,從而簡化了操作流程并提高了系統(tǒng)的穩(wěn)定性。
為解決傳統(tǒng)B/S架構(gòu)存在的用戶請求響應(yīng)延時(shí)、腳本語言功能有限等問題,本文使用基于中間件的分布式數(shù)據(jù)訪問技術(shù)設(shè)計(jì)了Web應(yīng)用程序框架模型,并將該模型應(yīng)用到某企業(yè)的信息管理系統(tǒng)中。從應(yīng)用效果來看,改進(jìn)后的信息系統(tǒng)運(yùn)行穩(wěn)定性更好,數(shù)據(jù)訪問與調(diào)用速率更快,達(dá)到了預(yù)期效果。下一步,還要在Web應(yīng)用程序框架的基礎(chǔ)上繼續(xù)開發(fā)移動(dòng)分布式應(yīng)用系統(tǒng),從而推動(dòng)這一技術(shù)在遠(yuǎn)程故障診斷、遠(yuǎn)程數(shù)據(jù)分析等領(lǐng)域有更好的應(yīng)用。