歡迎您光臨本站 註冊首頁

用C++ Builder開發多層資料庫應用程序

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

一、Multi_Tier結構的實現

C++ Builder提出的Multi_Tier是把以前的Client/Server前端應用程序內的BDE、SQLLink、DataModule拿到另一台NT伺服器上,也叫應用程序伺服器,而前端機只留下應用程序及DBClient.DLL,而移到應用程序伺服器上的DataModule則變成一個 COM程序,此COM程序是通過BDE、SQL Link傳輸SQL到後端資料庫,並從後端資料庫存取數據;然後由Tdatasetprovider組件把讀取的Dataset壓縮並切割成一段一段的數據包(data packet)通過DCOM的機制傳給前端機,前端機上的DBClient.DLL會把接收到的數據包再還原成DataSet傳給程序中的 TclientDataSet組件,Data Control組件就可以TclientDataSet為數據源對之進行操作。而COM程序會把修改後的DataSe正確地寫回後端資料庫。

與Client/Server結構相比,Multi_Tier結構具有很多優點,主要為:

1、大幅度地減少資料庫伺服器的負擔。因為多了一層應用程序伺服器,接管了眾多Client端機的Connection處理,資料庫伺服器只需處理應用伺服器的Connection,這樣就不會因為用戶(Client)數的增加而影響系統的運行性能。

2、前端機應用程序安裝方便。Multi_Tier結構中,把以前的Client/Server前端應用程序內的BDE、SQL Link、DataModule拿到數量很少的應用伺服器上,前端機只負責UseInterface的處理,只需要一個單純的EXE文件(包括 DBClient.DLL),可以在應用伺服器上開發前端應用程序,通過網路複製到各個前端機上。

二、環境配置

1、後端資料庫伺服器:

資料庫系統及資料庫提供的中間軟體,本文為VMS系統上安裝ORACLE 7.3,也可安裝ORACLE8、SQL*NET 2.3 。

2、應用程序伺服器:

(1)在PC Server上安裝Windows NT,使它成為一台Microsoft NT Server。
(2)保證網路的暢通,即網路層的通訊協議(TCP/TIP,IPX…)的暢通。
(3)安裝資料庫系統提供的中間件,本文是ORACLE提供的ORACLE for NT 的SQL*NET產品,執行SQL*NET Easy Configuration工具,設定ORACLE的TNS連接參數,加入一個資料庫別名,連上後端的ORACLE資料庫伺服器。
(4)安裝BDE Administrator,設定BDE的參數內容,具體步驟是Databases中新建一個別名,本文是ORACLE2,其中的參數改為:
SERVERNAME: 在第3步中定義的ORACLE資料庫伺服器的別名。
NET PROTOCOL: TNS
USER NAME: ORACLE的用戶名/口令
(5)安裝開發用的C++ builder 5軟體,用於開發應用伺服器和客戶端的程序。

3、前端客戶機:

(1)安裝操作系統Windows 95/98,本文是Windows 98,保證各前端機與應用伺服器在TCP/IP層上連通。

(2)從NT伺服器的\Winnt\System32目錄下複製的DBClient.DLL到本機的 \Windows\System。

(3)如操作系統為Windows 95,必須安裝DCOM程序,因為Windows 98與Windows NT Workstation已經內含DCOM程序,不需另外安裝。

(4)應用程序,在應用伺服器上開發,通過網路複製。

三.實現步驟

下面是一例對材料庫存表進行維護的Multi_Tier結構資料庫管理程序,用戶可以在前端的Windows 98機上通過中間的NT應用伺服器對Alpha機上的ORACLE資料庫上的庫存表進行維護:

1、應用伺服器上程序的開發:

(1)打開一個新工程,然後點主功能菜單[NEW]中的[RemoteDataModule] 填上Coclass Name項,這裡是KCBB。

(2)在RemoteDataModule上放置DATABASE,TABLE ,DataSetProvider三個組件,並設屬性如下:
Database1 的Aliasname ORACLE2
Database1 的 Databasename TEST
Database1 的 Connected TRUE
Table1 的 Databasename TEST
Table1 的 Tablename KCB
Table1 的Active TRUE
(這六行目的是連上後端資料庫ORACLE2的表KCB)
DataSetProvider的Dataset TABLE1
DataSetProvider 的Exported TRUE
(這兩行目的是DataSetProvider組件將表KCB作為DATASET傳給前端程序)
(3)在Forms1加一個Lable組件,上面寫上"伺服器應用程序已被啟動",這樣運行時屏幕上就會出現這句話,說明程序已被調用。
(4)運行程序,進行註冊操作。
為了前端程序能連上此COM程序,必須把它註冊到伺服器的註冊表內,可通過運行Regedit.EXE,根據COCLASS NAME?妊白⒉崦?慈啡獻⒉崾欠癯曬Α?br />
2、前端程序的開發:

(1)打開一個新工程,拖拉一個DCOMConnection組件,一個ClientDataSet組件,DataSource組件,Dbgrid組件到FORM1上,並設屬性如下:
DCOMConnection1的Computername 應用伺服器的機器名
DCOMConnection1的Servername PROJECT1.KCBB(COM註冊名)
ClientDataSet1的 Remoteserver DCOMCONNECTION1
ClientDataSet1的 Provider TABLE1
ClientDataSet1的 ACTIVE TRUE
(這五行連接上應用伺服器的COM程序,接收表KCB作為本機的Dataset)
DataSource 的 DATASET ClientDataSet1
Dbgrid的DataSource DataSource1
(這兩行用Dbgrid組件對本機Dataset進行操作)

(2)拖7個Button來當作功能按鈕 ,分別設為新增、修改、刪除、取消、寫入、重新讀取、返回。由於BC++B提供了ActionList組件,其中包括了StandardAction,可以利用這些標準的Action來編寫Dataset的編輯功能, 只要把Button的屬性Action依照每Button所賦予的功能指向對應的ActionList項即可。

3、將調試好的前端程序複製到所有的前端機中,運行調試,一個Multi_Tier結構的資料庫應用程序就可投入使用了。

本文描述了開發Multi_Tier結構的資料庫應用程序的一種方法,還需要進一步完善,如怎麼樣提高數據在其上的傳輸效率及數據傳輸中的出錯處理等都需要進一步地編程實現。

[火星人 ] 用C++ Builder開發多層資料庫應用程序已經有582次圍觀

http://coctec.com/docs/linux/show-post-190209.html