基於Delphi的三層數據庫系統的實現方法 轉,收藏了沒事學學

摘要隨着中間件與Web技術的發展,三層或多層分佈式應用體系越來越流行。而中間件作爲分佈體系應用的關鍵技術,以其獨特的優勢爲各種
摘要隨着中間件與Web技術的發展,三層或多層分佈式應用體系越來越流行。而中間件作爲分佈體系應用的關鍵技術,以其獨特的優勢爲各種分佈式應用的開發注入了強大動力,極大地推動了應用系統集成的發展。論文描述了基於Delphi中間件的三層結構訪問數據庫信息的方法。

關鍵詞三層結構;中間件;連接技術;數據庫應用系統

作者簡介:邵泳兵,女,廣東南海人,碩士,助教

1引言

當前的數據庫應用系統中,按其結構劃分爲兩類,一類是兩層結構的數據庫應系統,另一類是多層結構的數據庫應用系統。

兩層結構的數據庫應用系統包括客戶/服務器模式和瀏覽器/服務器模式,它的特點是數據和程序分離,數據庫服務器端治理數據,客戶機或瀏覽器顯示、訪問和更新數據,因此可以分別進行開發和維護,同時也降低了數據庫服務器的工作量,減小了網絡的流量,具有較強的安全性,但當客戶端程序或瀏覽器較多時,服務器的性能會明顯下降,而且應用邏輯安裝在每個客戶機上,假如系統要升級,就只能對客戶機逐一進行,假如客戶機分佈在不同的地點,維護和升級任務將非常繁重。爲了解決兩層結構應用系統的不足,人們提出了多層數據庫應用系統的結構模式,具有代表性的是三層結構。

2三層系統的體系結構

所謂三層結構,是在客戶端與數據庫之間加入了一個“中間層”,也叫組件層。在這種體系結構中,客戶機只存放表示層軟件,後臺是數據庫,業務邏輯包括事務處理、監控、信息排隊、Web服務等採用專門的中間件服務器,大大減少了與數據庫服務器連接的次數。通常情況下客戶端通過COM/DCOM通訊與中間層建立連接,再經由中間層與數據庫進行交互,客戶端與數據庫隔離,提高了整個系統的可靠性。在三層系統體系中,系統資源被統一治理和使用,用戶可以通過網格門戶透明地使用整個網絡資源。它的體系結構如圖1所示。

三層結構功能如下:

表示層:提供簡潔的人機交互界面,負責數據顯示和客戶端的數據處理,由客戶機實現;

功能層:實現業務邏輯,即實現客戶與數據庫對話,同時,在這一層中,還應實現分佈式治理、負載均衡、安全隔離等;它是一個遠程模塊,由應用服務器來實現;

數據層:負責數據治理,提供數據的存儲服務,由數據庫服務器來實現。

三層結構的主要特點:安全性。中間層隔離了客戶直接對數據服務器的訪問,保護了數據庫的安全。穩定性。三層分佈式體系提供了更可靠的穩定性:中間層緩衝Client與數據庫的實際連接,使數據庫的實際連接數量遠小於Client應用數量。當然,連接數越少,數據庫系統就越穩定。易維護。由於業務邏輯在中間服務器,當業務規則變化後,客戶端程序基本不做改動。快速響應。通過負載均衡以及中間層緩存數據能力,可以提高對客戶端的響應速度。系統擴展靈活。基於三層分佈體系,當業務增大時,可以在中間層部署更多的應用服務器,提高對客戶端的響應,而所有變化對客戶端透明。

 

 

3三層系統的連接技術

3。1前端連接技術

在三層數據庫應用系統中,客戶端與應用服務器端常處於不同的物理區域,它們之間的數據傳送成了影響系統運行效率最關鍵的技術。在Delphi中要建立與應用服務器的連接,客戶程序必須使用一個或幾個DataSnap連接組件,以及ClientDataSet等組件。首先DataSetProvider組件把讀取的DataSet數據源壓縮並切割成一段一段的數據包,通過各種傳輸協議如DCOM、TCP/IP、HTTP協議傳給前端,前端的DataSnap連接組件會把接受到的數據包再還原成DataSet傳給ClientDataSet組件,DataControl組件就可以將ClientDataSet作爲數據源對它進行操作。

DataSnap技術是Delphi開發多層數據庫應用系統的核心技術,它不但提供了基於DCOM、TCP/IP、HTTP三種傳輸協議的數據傳送方式,還通過SimpleObjectBroker組件使系統輕易具備容錯能力和負載平衡能力,使得Delphi開發的多層應用系統不但結構簡潔、執行效率高、應用範圍廣,而且安全穩定,而且現在DataSnap還能夠同時在Windows和Linux上執行。

3。2應用服務器與數據庫的連接ADO

ADO是Microsoft存取通用數據源的標準引擎,它通過封裝OLE-DB來存取各種不同的數據,OLE-DB定義了統一的COM接口作爲存取各類異質數據源的標準,藉由OLE-DB,程序員就可以使用一致的方式來存取各種數據,但OLE-DB太底層化,在使用上非常複雜,而ADO組件以COM技術封裝OLE-DB爲ADO對象,大量簡化了程序員開發數據存取的工作,同時許多廠商也推出了ADO驅動程序,使得ADO應用日趨廣泛。

4實現方法

本例使用DCOM協議,系統模型如圖2所示。

應用服務器是一個遠程數據模塊,它是一個COM程序,它通過ADO與SQL語句和數據庫服務器連接。它負責從數據庫服務器存取數據並通過DataSetProvider組件將數據分割成數據包,然後通過DCOM協議傳遞到網絡上的客戶端。客戶端的組件負責還原數據,這項工作由DCOMConnection來完成。ClientDataSet組件是客戶端數據集組件,它負責接收DCOMConnection組件還原過來的數據,並把數據傳遞給客戶端數據處理組件,客戶端數據處理和顯示組件主要有ADOQuery、ADOTable、DataSource、DBGrid、DBEdit、DBComboBox等等,反過來,ClientDataSet組件負責收集客戶端處理的數據,並把處理後的數據提交DCOMConnection組件,該組件通過DCOM協議和應用服務器正確地將數據寫入數據庫DB。

 

 

以顯示學生數據庫中學生基本信息表爲例,具體地用Delphi語言實現步驟如下。

4。1創建數據庫

在E盤建立文件夾E:“學生課程治理,在該文件夾中創建Access數據庫Student。mdb,包含表jbqk、course、teacher、sle_course,jbqk表中設置主鍵爲number,以備查詢之用。建立的表如圖3所示。

 

 

圖3學生基本情況表jbqk

4。2建立應用服務器程序

建立一個應用程序,在窗體上添加ADOConnection1、ADOTable1、DataSource、DBGrid1四個組件,設置這四個組件的屬性。

ADOConnection1的ConnectionString屬性設置爲Student。mdb,LoginPrompt屬性設置爲false,ADOTable1的Connection屬性設置爲ADOConnection1,TableName屬性設置爲jbqk,Active屬性設置爲true。保存所有文件,項目文件名爲AppServer,單元文件名爲Server1。

新建一個遠程數據模塊,設置類名爲rdstu,在它的Uses子句中添加Server1,這樣rdstu模塊就可以訪問Server1裏面的組件了。在模塊中添加組件DataSetProvider,設置它的DataSet屬性爲Form1。Table1,這樣可以將本地數據讀到DCOM服務器上,並由DataSetProvider組件提供給客戶端。保存單元文件,命名爲Server2。

運行程序後,系統自動在服務器註冊程序,當有客戶端程序運行時,系統會自動啓動服務器程序。

4。3建立客戶端程序

爲了方便描述,這裏把客戶端程序和服務器程序放在同一臺電腦上。實際應用中通常把客戶端程序與服務器程序放置在不同的電腦上。

新建一個應用程序,在窗體上添加DCOMConnection1、ClientDataSet1、DataSource1、DBGrid1、DBNavigator1等組件。

設置DCOMConnection1的ComputerName屬性爲服務器所在的計算機名,這樣程序可以在網絡上尋找服務器,假如本服務器已在本機註冊,則不設置ComputerName屬性;設置它的ServerName屬性爲AppServer。rdstu;設置它的Connected屬性爲True,此時激活服務器程序。

設置ClientDataSet1的RemoteServer屬性爲DCOMConnection1;ProviderName屬性爲DataSetProvider1。這樣ClientDataSet1就可以通過DCOMConnection1從DataSetProvider1組件讀取數據了。

DataSource1的DataDet屬性設置爲ClientDataSet1。

DBGrid1和DBNavigator1的DataSource屬性設置爲DataSource1。

5結論

和兩層C/S結構相比,三層C/S結構具有更靈活的硬件系統構成,對於各個層可以選擇與其處理負荷和處理特性相適應的硬件。合理地分割三層結構並使其獨立,可以使系統的結構變得簡單清楚,提高了程序的可維護性。三層C/S結構中,應用的各層可以並行開發,各層也可以選擇各自最適合的開發語言,有利於變更和維護應用技術規範。按層分割功能使各個程序的處理邏輯變得十分簡單。在Delphi中主要通過DataSnap等技術來實現。隨着基於Web的瘦客戶機結構的發展,基於多層分佈體系的應用將會越來越廣泛

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章