繼Client/Server結構在MRP、MIS等數據庫應用系統紅火之後,多層結構(Multi_Tier)開始登場,許多廠商提供了各種中間件。本文描述了用Borland C++ Builder(以下簡稱BCB)所提供的Multi_Tier構件來開發多層數據庫應用程序的方法。
一、 Multi_Tier結構的實現
C++ Builder提出的Multi_Tier是把以前的Client/Server前端應用程序裡的BDE、SQL Link和DataModule拿到另一台NT服務器上,也叫應用程序服務器,前端機只留下應用程序及DBClient.DLL,而移到應用程序服務器上的DataModule則變成一個COM程序,此COM程序是通過BDE 、SQL Link傳輸SQL到後端數據庫,並從後端數據庫存取數據,然後由Tdatasetprovider組件把讀取的Dataset壓縮並切割成一段一段的數據包(data packet)通過DCOM的機制傳給前端機,前端機上的DBClient.DLL會把接收到的數據包再還原成DataSet傳給程序中的TclientDataSet組件,Data Control組件就可以TclientDataSet為數據源對之進行操作,而COM程序會把修改後的DataSet正確地寫回後端數據庫。
與Client/Server結構相比,Multi_Tier結構具有很多優點,主要表現在:
1. 大幅度地減少數據庫服務器的負擔。因為多了一層應用程序服務器,接管了眾多客戶機的Connection處理,數據庫服務器只需處理應用服務器的Connection,這樣就不會因為用戶(Client)數的增加而影響系統的運行性能。
2. 前端機應用程序安裝方便。Multi_Tier結構中,把以前的Client/Server前端應用程序內的BDE、SQL Link和DataModule拿到數量很少的應用服務器上,前端機只負責Use Interface的處理,只需要一個單純的EXE文件(包括DBClient.DLL),可以在應用服務器上開發前端應用程序,通過網絡復制到各個前端機上。
二、 環境配置
1.後端數據庫服務器配置
包括數據庫系統及數據庫提供的中間件。本文具體環境為:
VMS操作系統上安裝Oracle7.3。
2.應用程序服務器配置
(1)在PC Server上安裝Windows NT ,使它成為一台Microsoft NT Server;
(2)保證網絡的暢通,即網絡層的通訊協議的暢通;
(3)安裝數據庫系統提供的中間件,本文是Oracle提供的Oracle for NT 的SQLNET產品,執行SQLNET Easy Configuration工具,設定Oracle的TNS連接參數,加入一個數據庫別名,連上後端的Oracle數據庫服務器;
(4)安裝BDE Administrator,設定BDE的參數內容,具體步驟如下:
Databases中先新建一個別名,本文是Oracle2,其中的參數改為:
server name 數據庫服務器的別名
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
databasename test
connected true
table1 databasename test
tablename kcb
active true
datasetprovider dataset table10
expo0rted true
前六行目的是連上後端數據庫Oracle2的表KCB,後兩行目的是DataSetProvider組件將表KCB作為DATASET傳給前端程序。
(3)在Forms1加一個Lable組件,上面寫上“服務器應用程序已被啟動”,這樣運行時屏幕上就會出現這句話,說明程序已被調用。
(4)為了前端程序能連上此COM程序,必須把它注冊到服務器的注冊表內,可通過運行Regedit.EXE,根據Coclass Name尋找注冊名來確認注冊是否成功。
2.前端程序的開發
(1)打開一個新工程,拖拉一個DCOMConnection組件、一個ClientDataSet組件、DataSource組件、Dbgrid組件到FORM1上。
DCOMConnection1設置如下屬性:
computername 應用服務器的機器名
servername project1.kcbb
ClientDataSet1設置如下屬性:
remoteserver dcomconnection1
provider table1
active true
DataSource的DATASET設置為ClientDataSet1;
Dbgrid的DataSource設置為DataSource1。
(2)拖7個Button來當作功能按鈕 ,分別設為新增、修改、刪除、取消、寫入、重新讀取、返回 。由於BCB提供了ActionList組件,其中包括了StandardAction,可以利用這些標准的Action來編寫Dataset的編輯功能, 只要把Button的屬性Action依照每Button所賦予的功能指向對應的ActionList項即可。
最後,將調試好的前端程序復制到所有的前端機中,運行調試,一個Multi_Tier結構的數據庫應用程序就可投入使用了。
本文僅僅描述了開發Multi_Tier結構的數據庫應用程序的一種基本方法,還需要我們在實際應用中進一步完善,如怎樣提高數據在其上的傳輸效率及數據傳輸中的出錯處理等都需要進一步地編程實現。