組件技術是新一代軟件技術發展的標志,作為著名的RAD開發工具,Delphi可以輕松地實現組件的開發。本文將詳細介紹Delphi中DCOM/CORBA的實現步驟。
■創建應用服務器
要創建一個多層ClIEnt/Server應用程序,首先要創建應用服務器,然後注冊或安裝應用服務器,只有應用服務器已注冊並且正在運行的情況下,才能創建客戶程序。對於客戶程序來說,既可以在設計期連接應用服務器,也可以在運行期連接應用服務器。注意:如果客戶程序與應用服務器不在同一個系統中,必須在客戶計算機上注冊或安裝應用服務器,這樣,在設計期就可以連接應用服務器。創建應用服務器的一般步驟是:
1.使用File選單上的New Application命令開始一個新項目,然後使用File選單上的New命令,選取Multi頁。如果通過DCOM方式訪問服務器,則選擇遠程數據模塊“Remote Data Module”;如果通過CORBA方式訪問服務器,則選擇CORBA數據模塊“CORBA Data Module”。
2.把一個數據集構件,如TTable、TQuery或TStoredProc放到遠程數據模塊上並進行相關設置,使得它們能訪問遠程的SQL數據庫。注意盡量不要把TDatabase構件放到遠程數據模塊上,因為這可能引起名稱沖突,如果需要用TDatabase構件來連接SQL數據庫,建議把TDatabase構件放到另一個數據模塊上,然後引用這個數據模塊的單元文件。
3.把TDataSetProvider或TProvider構件放到遠程數據模塊上,有一個數據集構件,就要有一個TDataSetProvider或TProvider構件與之對應。然後,用鼠標右鍵單擊TDataSetProvider或TProvider構件,在彈出的選單中選擇“ExportFrom in Data Module”命令,這是為了引出IProvider接口,在類型庫中注冊。
4.設置TDataSetProvider或TProvider構件的DataSet屬性指定要訪問的數據庫,實際上就是第二步所放的數據集構件。
5.編寫代碼,實現規則。
6.保存、編譯、注冊並安裝應用服務器。對於DCOM協議而言,應用服務器就好像一個自動化服務器一樣,必須像ActiveX或COM服務器那樣注冊。如果使用CORBA,可以不注冊,但最好注冊。如果要使客戶程序對服務器接口的調用在運行期是動態確定的,就要在接口庫(Interface Repository)中安裝服務器的接口。如果要使客戶程序能自動激活應用服務器(如果還沒有運行的話),應用服務器就必須用OAD(Object Activation Daemon)進行注冊。
7.如果應用服務器沒有使用DCOM,必須安裝有關的運行期軟件,因為其他連接方式需要這些運行期軟件的支持。對於CORBA來說,需要安裝VisiBroker ORB。
■遠程數據模塊
應用服務器的關鍵部件是遠程數據模塊。Delphi 4支持三種類型的遠程數據模塊,分別是TRemoteDataModule、TMTSDataModule和TCorbaDataModule。其中TRemoteDataModule在生成DCOM應用時加入,在設置其屬性的“Remote Data Module Wizard”對話框中,在“Class Name”框內鍵入遠程數據模塊的類名,不必以T打頭。Delphi 將以此名生成一個TRemoteDataModule的派生類,並以此名生成有關接口。在“Threading Model”框內選擇一種線程模式,在“Instancing”框內選擇是否根據客戶的請求生成遠程數據模塊的多個實例。
在CORBA應用中,要加入一個TCorbaDataModule類型的遠程數據模塊,在“CORBA Data Module Wizard”對話框中需要在“Class Name”框內鍵入遠程數據模塊的類名, Delphi將生成一個TCorbaDataModule的派生類,並以此名生成有關接口。在“Threading Model”框內選擇一種線程模式。在“Instancing”框內指定應用服務器怎樣創建遠程數據模塊的實例,可以選“Shared Instance”或者“Instance-Per-Client”。如果選“Shared Instance”,應用服務器只創建遠程數據模塊的一個實例來處理所有客戶的請求。如果選“Instance-Per-ClIEnt”,每當一個客戶試圖連接時,遠程數據模塊都會生成一個實例,只要客戶與應用服務器的連接沒有斷開,遠程數據模塊的實例就一直存在。
■創建客戶程序
下面我們將開始設計客戶端程序。創建客戶程序的一般步驟是:
1.使用“File”選單上的“New Application”命令開始一個新的項目,然後使用“File”選單上的“New”命令,再雙擊“Data Module”圖標加入一個數據模塊。
2.把一個或幾個MIDAS連接構件如TDCOMConnection、TCorbaConnection、TRemoteServer或TMIDASConnection加到數據模塊上。至於究竟選擇哪一種MIDAS連接構件,這取決於通訊協議。
3.設置有關屬性指定和連接應用服務器,這與具體的MIDAS連接構件有關。
4.把一個或幾個TClIEntDataSet構件放到數據模塊上,設置RemoteServer屬性指定一個MIDAS連接構件,設置ProviderName屬性指定應用服務器上的TDataSetResolver 或TProvider構件,這樣,客戶程序就可以通過IProvider接口與應用服務器通訊。
5.把一個TDataSource構件放到數據模塊上,設置它的DataSet屬性指定TClIE