資源描述:
《delphi midas編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、MIDAS編程多層分布式應(yīng)用服務(wù)(MultitieredDistributedApplicationServices,即MIDAS)套件是一套組件,使用這些組件可以很容易地建立多層的客戶-服務(wù)器數(shù)據(jù)庫(kù)應(yīng)用程序。這也是公司愿意為Delphi企業(yè)版支付數(shù)千美元的原因之一,而它確實(shí)物有所值。如果您購(gòu)買(mǎi)了個(gè)人版本的Delphi,那么必須再購(gòu)買(mǎi)企業(yè)版才能得到MIDAS組件和相應(yīng)的動(dòng)態(tài)鏈接庫(kù)(DLL)。如果您使用的是標(biāo)準(zhǔn)版或?qū)I(yè)版,那么本節(jié)中的例子將無(wú)法使用。但您仍然可以閱讀一下本節(jié),來(lái)看一看Delphi企業(yè)版是否適合您。對(duì)另一些人來(lái)說(shuō),本節(jié)將通過(guò)例子來(lái)演示如何使用MIDAS的一些核心功能。
2、通過(guò)示范如何利用一些核心控件來(lái)建立客戶和服務(wù)器程序,對(duì)這些功能進(jìn)行了演示;共有三個(gè)例子示范了這些控件:一個(gè)動(dòng)態(tài)查詢程序,它使用DCOM連接到同一臺(tái)計(jì)算機(jī)和遠(yuǎn)程機(jī)器上的服務(wù)器,另一個(gè)程序示范了出錯(cuò)情況下的恢復(fù),還有一個(gè)公文包程序的例子。請(qǐng)記住:客戶程序通常有圖形用戶界面,并且與用戶進(jìn)行交互。而服務(wù)器是向客戶程序提供服務(wù)的應(yīng)用程序??蛻?服務(wù)器這個(gè)術(shù)語(yǔ)隱含著圖形用戶界面與數(shù)據(jù)庫(kù)服務(wù)器。n層、多層或三層這些術(shù)語(yǔ),大體上也是同樣的意思。第一層是客戶程序,中間層或第二層包含了商務(wù)規(guī)則的編碼,通常是應(yīng)用服務(wù)器,而最后一層是數(shù)據(jù)庫(kù)服務(wù)器自身(參見(jiàn)圖15.1)。本章提供了一些例子程序進(jìn)行示范,其
3、中客戶端是用Delphi實(shí)現(xiàn)的標(biāo)準(zhǔn)Windows可執(zhí)行文件,而中間層則是MIDAS和用Delphi實(shí)現(xiàn)的進(jìn)程外COM服務(wù)器——自動(dòng)化服務(wù)器,此外還需要適當(dāng)?shù)臄?shù)據(jù)庫(kù)。為避免創(chuàng)建難于理解的例子,本章中只使用了DBDEMO表和本地Interbase數(shù)據(jù)庫(kù)。請(qǐng)記住,任何數(shù)據(jù)庫(kù)服務(wù)器,如SQLServer、Oracle或Sybase等,在客戶程序和中間層的代碼不進(jìn)行改變或改動(dòng)很少的情況即可使用。圖15.1基本的三層客戶-服務(wù)器應(yīng)用程序配置,分別使用了三臺(tái)物理上獨(dú)立的計(jì)算機(jī)示范了每一層的不同作用。所有的三層可以都位于同一臺(tái)物理計(jì)算機(jī)上15.1MIDAS組件概述本節(jié)中討論了通??赡苡玫降慕M件。
4、用于實(shí)現(xiàn)三層應(yīng)用程序的MIDAS組件分為客戶程序的組件和服務(wù)器程序的組件。另外,可能還需要一些通常用于建立客戶程序的其他組件。注意:這里并未提供對(duì)MIDAS組件的詳盡描述。MIDAS套件是非常廣泛的,現(xiàn)在看來(lái)還沒(méi)有專(zhuān)門(mén)講述MIDAS的Delphi書(shū)籍。MIDAS為開(kāi)發(fā)者提供了客戶程序與服務(wù)器程序之間的橋梁。一旦創(chuàng)建了包含TRemoteDataModule對(duì)象的服務(wù)器程序,然后即可建立客戶程序,就像是兩層應(yīng)用程序一樣。即,可以根據(jù)個(gè)人的喜好選擇是否使用數(shù)據(jù)感知控件,而無(wú)論怎樣都可以在客戶程序中得到并使用相關(guān)的數(shù)據(jù),就像是已經(jīng)了解了有關(guān)數(shù)據(jù)庫(kù)的知識(shí)一樣。由于中間層的服務(wù)器程序是新出現(xiàn)
5、的部分,我們從用于建立應(yīng)用服務(wù)器的組件開(kāi)始。15.1.1定義服務(wù)器應(yīng)用程序在兩層的客戶-服務(wù)器應(yīng)用程序中,包括數(shù)據(jù)庫(kù)服務(wù)器以及數(shù)據(jù)感知客戶程序。客戶程序由程序員編寫(xiě),而服務(wù)器則是數(shù)據(jù)庫(kù)應(yīng)用程序。在三層系統(tǒng)中,客戶與數(shù)據(jù)庫(kù)層之間添加了應(yīng)用服務(wù)器層。本節(jié)示范了用于建立服務(wù)器程序的一些基本的組件。注意:請(qǐng)記住,在n層、三層和多層結(jié)構(gòu)之間并無(wú)實(shí)際的區(qū)別。對(duì)于我們的目的來(lái)說(shuō),它們是同樣的;至于是否存在區(qū)別,則是一個(gè)有待確定的問(wèn)題。TRemoteDataModuleTRemoteDataModule是TDataModule的后代,其用法也大致相同。在服務(wù)器程序中,可將遠(yuǎn)程數(shù)據(jù)模塊作為所有非可
6、視組件的容器使用。TRemoteDataModule實(shí)現(xiàn)了IAppServer接口,只需向標(biāo)準(zhǔn)的應(yīng)用程序中添加該類(lèi)的對(duì)象,即可實(shí)現(xiàn)需要向客戶程序提供的功能。要?jiǎng)?chuàng)建MIDAS服務(wù)器,首先在Delphi中啟動(dòng)一個(gè)標(biāo)準(zhǔn)的應(yīng)用程序工程。從NewItems對(duì)話框的Multitier屬性頁(yè)中,向工程添加一個(gè)遠(yuǎn)程數(shù)據(jù)模塊對(duì)象。創(chuàng)建遠(yuǎn)程數(shù)據(jù)模塊的向?qū)н^(guò)程如下所示(見(jiàn)圖15.2),其中需要選定CoClass的名字、實(shí)例化方法以及線程模型。提供了這些信息后,Delphi將創(chuàng)建類(lèi)型庫(kù)和新的遠(yuǎn)程數(shù)據(jù)模塊子類(lèi),該子類(lèi)由TRemoteDataModule子類(lèi)化而來(lái),并繼承了所定義的CoClass接口。MID
7、AS應(yīng)用服務(wù)器是一個(gè)自動(dòng)化服務(wù)器??梢韵蚪涌谔砑右恍┕δ?,并在遠(yuǎn)程數(shù)據(jù)模塊中進(jìn)行實(shí)現(xiàn)(參見(jiàn)15.2節(jié)“對(duì)MIDAS服務(wù)器進(jìn)行查詢”,其中的例子實(shí)現(xiàn)了一個(gè)接口,返回服務(wù)器可以訪問(wèn)的所有表名)。遠(yuǎn)程數(shù)據(jù)模塊將實(shí)現(xiàn)UpdateRegistry方法,該方法負(fù)責(zé)在第一次運(yùn)行程序時(shí)向WindowsNT注冊(cè)服務(wù)器。無(wú)須向遠(yuǎn)程數(shù)據(jù)模塊添加額外的功能,但需要添加一些組件,至少包括一個(gè)TProvider和一個(gè)TDataSet組件。添加TDatabase和TSession組件也很有用。在Delphi專(zhuān)