用C++ Builder開發(fā)多層數(shù)據(jù)庫應(yīng)用程序
發(fā)布時間:2008-03-22 閱讀數(shù): 次 來源:網(wǎng)樂原科技
繼Client/Server結(jié)構(gòu)在MRP、MIS等數(shù)據(jù)庫應(yīng)用系統(tǒng)紅火之后,多層結(jié)構(gòu)(Multi_Tier)開始登場。許多廠商提供了各種中間件,本文描述了用Borland C++ Builder(以下簡稱BC++B)所提供的Multi_Tier構(gòu)件來開發(fā)Multi_Tier數(shù)據(jù)庫應(yīng)用程序的方法。
一、Multi_Tier結(jié)構(gòu)的實(shí)現(xiàn)
C++ Builder提出的Multi_Tier是把以前的Client/Server前端應(yīng)用程序內(nèi)的BDE、SQLLink、DataModule拿到另一臺NT服務(wù)器上,也叫應(yīng)用程序服務(wù)器,而前端機(jī)只留下應(yīng)用程序及DBClient.DLL,而移到應(yīng)用程序服務(wù)器上的DataModule則變成一個COM程序,此COM程序是通過BDE、SQL Link傳輸SQL到后端數(shù)據(jù)庫,并從后端數(shù)據(jù)庫存取數(shù)據(jù);然后由Tdatasetprovider組件把讀取的Dataset壓縮并切割成一段一段的數(shù)據(jù)包(data packet)通過DCOM的機(jī)制傳給前端機(jī),前端機(jī)上的DBClient.DLL會把接收到的數(shù)據(jù)包再還原成DataSet傳給程序中的TclientDataSet組件,Data Control組件就可以TclientDataSet為數(shù)據(jù)源對之進(jìn)行操作。而COM程序會把修改后的DataSe正確地寫回后端數(shù)據(jù)庫。
與Client/Server結(jié)構(gòu)相比,Multi_Tier結(jié)構(gòu)具有很多優(yōu)點(diǎn),主要為:
1、大幅度地減少數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān)。因?yàn)槎嗔艘粚討?yīng)用程序服務(wù)器,接管了眾多Client端機(jī)的Connection處理,數(shù)據(jù)庫服務(wù)器只需處理應(yīng)用服務(wù)器的Connection,這樣就不會因?yàn)橛脩簦–lient)數(shù)的增加而影響系統(tǒng)的運(yùn)行性能。
2、前端機(jī)應(yīng)用程序安裝方便。Multi_Tier結(jié)構(gòu)中,把以前的Client/Server前端應(yīng)用程序內(nèi)的BDE、SQL Link、DataModule拿到數(shù)量很少的應(yīng)用服務(wù)器上,前端機(jī)只負(fù)責(zé)UseInterface的處理,只需要一個單純的EXE文件(包括DBClient.DLL),可以在應(yīng)用服務(wù)器上開發(fā)前端應(yīng)用程序,通過網(wǎng)絡(luò)復(fù)制到各個前端機(jī)上。
二、環(huán)境配置
1、后端數(shù)據(jù)庫服務(wù)器:
數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)庫提供的中間軟件,本文為VMS系統(tǒng)上安裝ORACLE 7.3,也可安裝ORACLE8、SQL*NET 2.3 。
2、應(yīng)用程序服務(wù)器:
?。?)在PC Server上安裝Windows NT,使它成為一臺Microsoft NT Server。
(2)保證網(wǎng)絡(luò)的暢通,即網(wǎng)絡(luò)層的通訊協(xié)議(TCP/TIP,IPX…)的暢通。
?。?)安裝數(shù)據(jù)庫系統(tǒng)提供的中間件,本文是ORACLE提供的ORACLE for NT 的SQL*NET產(chǎn)品,執(zhí)行SQL*NET Easy Configuration工具,設(shè)定ORACLE的TNS連接參數(shù),加入一個數(shù)據(jù)庫別名,連上后端的ORACLE數(shù)據(jù)庫服務(wù)器。
?。?)安裝BDE Administrator,設(shè)定BDE的參數(shù)內(nèi)容,具體步驟是Databases中新建一個別名,本文是ORACLE2,其中的參數(shù)改為:
SERVERNAME: 在第3步中定義的ORACLE數(shù)據(jù)庫服務(wù)器的別名。
NET PROTOCOL: TNS
USER NAME: ORACLE的用戶名/口令
?。?)安裝開發(fā)用的C++ builder 5軟件,用于開發(fā)應(yīng)用服務(wù)器和客戶端的程序。
3、前端客戶機(jī):
?。?)安裝操作系統(tǒng)Windows 95/98,本文是Windows 98,保證各前端機(jī)與應(yīng)用服務(wù)器在TCP/IP層上連通。
?。?)從NT服務(wù)器的\Winnt\System32目錄下復(fù)制的DBClient.DLL到本機(jī)的 \Windows\System。
(3)如操作系統(tǒng)為Windows 95,必須安裝DCOM程序,因?yàn)閃indows 98與Windows NT Workstation已經(jīng)內(nèi)含DCOM程序,不需另外安裝。
(4)應(yīng)用程序,在應(yīng)用服務(wù)器上開發(fā),通過網(wǎng)絡(luò)復(fù)制。
三.實(shí)現(xiàn)步驟
下面是一例對材料庫存表進(jìn)行維護(hù)的Multi_Tier結(jié)構(gòu)數(shù)據(jù)庫管理程序,用戶可以在前端的Windows 98機(jī)上通過中間的NT應(yīng)用服務(wù)器對Alpha機(jī)上的ORACLE數(shù)據(jù)庫上的庫存表進(jìn)行維護(hù):
1、應(yīng)用服務(wù)器上程序的開發(fā):
(1)打開一個新工程,然后點(diǎn)主功能菜單[NEW]中的[RemoteDataModule] 填上Coclass Name項,這里是KCBB。
(2)在RemoteDataModule上放置DATABASE,TABLE ,DataSetProvider三個組件,并設(shè)屬性如下:
Database1 的Aliasname ORACLE2
Database1 的 Databasename TEST
Database1 的 Connected TRUE
Table1 的 Databasename TEST
Table1 的 Tablename KCB
Table1 的Active TRUE
(這六行目的是連上后端數(shù)據(jù)庫ORACLE2的表KCB)
DataSetProvider的Dataset TABLE1
DataSetProvider 的Exported TRUE
(這兩行目的是DataSetProvider組件將表KCB作為DATASET傳給前端程序)
(3)在Forms1加一個Lable組件,上面寫上"服務(wù)器應(yīng)用程序已被啟動",這樣運(yùn)行時屏幕上就會出現(xiàn)這句話,說明程序已被調(diào)用。
?。?)運(yùn)行程序,進(jìn)行注冊操作。
為了前端程序能連上此COM程序,必須把它注冊到服務(wù)器的注冊表內(nèi),可通過運(yùn)行Regedit.EXE,根據(jù)COCLASS NAME捜尋注冊名來確認(rèn)注冊是否成功。
2、前端程序的開發(fā):
?。?)打開一個新工程,拖拉一個DCOMConnection組件,一個ClientDataSet組件,DataSource組件,Dbgrid組件到FORM1上,并設(shè)屬性如下:
DCOMConnection1的Computername 應(yīng)用服務(wù)器的機(jī)器名
DCOMConnection1的Servername PROJECT1.KCBB(COM注冊名)
ClientDataSet1的 Remoteserver DCOMCONNECTION1
ClientDataSet1的 Provider TABLE1
ClientDataSet1的 ACTIVE TRUE
(這五行連接上應(yīng)用服務(wù)器的COM程序,接收表KCB作為本機(jī)的Dataset)
DataSource 的 DATASET ClientDataSet1
Dbgrid的DataSource DataSource1
(這兩行用Dbgrid組件對本機(jī)Dataset進(jìn)行操作)
(2)拖7個Button來當(dāng)作功能按鈕 ,分別設(shè)為新增、修改、刪除、取消、寫入、重新讀取、返回 。由于BC++B提供了ActionList組件,其中包括了StandardAction,可以利用這些標(biāo)準(zhǔn)的Action來編寫Dataset的編輯功能, 只要把Button的屬性Action依照每Button所賦予的功能指向?qū)?yīng)的ActionList項即可。
3、將調(diào)試好的前端程序復(fù)制到所有的前端機(jī)中,運(yùn)行調(diào)試,一個Multi_Tier結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序就可投入使用了。
本文描述了開發(fā)Multi_Tier結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序的一種方法,還需要進(jìn)一步完善,如怎么樣提高數(shù)據(jù)在其上的傳輸效率及數(shù)據(jù)傳輸中的出錯處理等都需要進(jìn)一步地編程實(shí)現(xiàn)。