用VB開發(fā)分布式應(yīng)用
發(fā)表時(shí)間:2023-08-13 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]微軟推出的VB是一個(gè)功能強(qiáng)大的開發(fā)平臺(tái)。它在“代碼重用性”上地加強(qiáng)是一個(gè)引人注目的特點(diǎn)。我們可以將需要多次重復(fù)使用的功能單元開發(fā)成activex組件(activex control,activex ...
微軟推出的VB是一個(gè)功能強(qiáng)大的開發(fā)平臺(tái)。它在“代碼重用性”上地加強(qiáng)是一個(gè)引人注目的特點(diǎn)。我們可以將需要多次重復(fù)使用的功能單元開發(fā)成activex組件(activex control,activex exe,activex dll),然后在新程序中象使用vb標(biāo)準(zhǔn)控件及類一樣使用這些組件。 activex組件給開發(fā)網(wǎng)絡(luò)應(yīng)用帶來很大方便。我們可以將這些組件分布在網(wǎng)絡(luò)的不同機(jī)器上,構(gòu)成分布式應(yīng)用,就好象所有組件都在同一臺(tái)機(jī)器上一樣。很多朋友都有開發(fā)本地activex組件的經(jīng)驗(yàn),本文將結(jié)合實(shí)例介紹一下如何將activex組件分布在網(wǎng)絡(luò)上構(gòu)成分布式應(yīng)用。
一、概述
“activex"是微軟為分布式計(jì)算制定的一套標(biāo)準(zhǔn),它的前身就是大家所熟知的“ole automation"。當(dāng)分布式應(yīng)用通過網(wǎng)絡(luò)通訊時(shí),activex可以使用兩種不同的機(jī)制對(duì)客戶請(qǐng)求作出響應(yīng)。一種稱為“分布組件對(duì)象模式(dcom)”,只可以在windows nt和windows 95上使用;另一種是“遠(yuǎn)程自動(dòng)化(remote automation)",它可以在16位環(huán)境下構(gòu)造分布式應(yīng)用。
這兩種分布式機(jī)制,有著極其引人的特點(diǎn):與組件物理位置的無關(guān)性。也就是說,當(dāng)你構(gòu)造一個(gè)activex組件時(shí),無需知道它將分布在那一臺(tái)機(jī)器上。同樣的組件,即可以將它放在本機(jī),也可以將它分布在其它機(jī)器上而不需要從新編譯。這樣,根據(jù)網(wǎng)絡(luò)的性能和網(wǎng)絡(luò)結(jié)構(gòu)的變化,我們可以方便的調(diào)整組件的分布策略。
當(dāng)然,用activex構(gòu)建分布式應(yīng)用的各個(gè)獨(dú)立組件,還有其它優(yōu)點(diǎn):
構(gòu)造遠(yuǎn)程組件和構(gòu)造本地組件的編程方法一模一樣,無須特殊的工程經(jīng)驗(yàn)?梢杂胊ctivex組件在服務(wù)器端實(shí)現(xiàn)復(fù)雜的商業(yè)規(guī)則。比起用dbms(如sql server)來完成同樣的工作,我們有更好地編程、維護(hù)、排錯(cuò)手段。
有大量的商業(yè)組件可以使用。而且這樣的組件會(huì)越來越多。我們只需將特殊的商業(yè)規(guī)則開發(fā)成組件,與購買的組件配合使用。
二、開發(fā)和調(diào)試
開發(fā)分布式組件和開發(fā)本地組件相同,調(diào)試也可以在本地完成,本文不在贅述。(可以參看VB所帶的例子:\sample\clisvr\booksale\client\book_cli.vbp客戶端程序;\sample\clisvr\booksale\client\book_svr.vbp服務(wù)器程序。)在開發(fā)分布式服務(wù)器段組件時(shí),請(qǐng)注意下列問題:
服務(wù)器端的project應(yīng)為activex exe(進(jìn)程外的activex組件)。這也很容易理解,不可能在兩臺(tái)機(jī)器上完成同一個(gè)進(jìn)程,所以,不可能使用activex dll(進(jìn)程內(nèi)的組件)。
在project properties對(duì)話框的組件欄目下,應(yīng)設(shè)為remote server file。這樣,在程序編譯時(shí)會(huì)生成一個(gè)vbr文件,在生成安裝盤時(shí)要用。大家知道,windows程序在系統(tǒng)注冊(cè)表中有注冊(cè),此文件與注冊(cè)有關(guān)。
class屬性應(yīng)設(shè)為mutiuse,以便多個(gè)客戶應(yīng)用可以使用它。
三、生成安裝盤
服務(wù)器端組件及客戶端程序?qū)惭b在不同的機(jī)器上,應(yīng)利用setup wizard分別生成安裝程序。
當(dāng)生成客戶端程序安裝盤時(shí),需提供服務(wù)器組件所在的機(jī)器名(以后可以修改),這將影響客戶端機(jī)器的注冊(cè)項(xiàng),這些注冊(cè)項(xiàng)告訴客戶端程序,到那里去尋找相應(yīng)的服務(wù)(即服務(wù)器端組件提供的服務(wù))。微軟提供了工具,可以根據(jù)需要隨時(shí)修改這些注冊(cè)項(xiàng)。如果使用remote automation機(jī)制,可使用remauto connection manager;如使用dcom機(jī)制,可使用dcom configuration manager。remauto connector manager在VB軟件包中即有,在生成安裝盤時(shí)將自動(dòng)包括它。windows nt 4.0中包含dcom configuration manager,可直接使用。對(duì)于windows95,需從www.microsoft.com下載dcom95.exe及dcom95cfg.exe并運(yùn)行,可得到dcom configuration manager(注意要重新啟動(dòng)機(jī)器)。
利用上述工具,可實(shí)現(xiàn)如下功能:
1.可以隨時(shí)切換服務(wù)器組件是在本地還是遠(yuǎn)程。這樣可以方便的在本機(jī)調(diào)試遠(yuǎn)程組件。
2.可隨時(shí)改變服務(wù)器組件的安裝位置。
如何生成服務(wù)器端安裝程序:
1.使用setup wizard,按要求指明project文件所在的路徑,并指明“產(chǎn)生安裝程序”。
2.在進(jìn)入“share active application”畫面時(shí),選擇“安裝為一個(gè)共享組件”。如果你準(zhǔn)備使用remote automation,在畫面下方選擇“yes";如使用dcom,選擇“no”。如果使用remote automation,remauto connection manager(racmgr32.exe)、remote automation manager(autmgr32.exe)將自動(dòng)包含在安裝程序內(nèi)。
如何生成客戶端安裝程序:
1.使用setup wizard,按要求指明project文件所在的路徑,并指明“產(chǎn)生安裝程序”。
2.進(jìn)入“activex組件”畫面時(shí),按add remote按紐指定服務(wù)器組件對(duì)應(yīng)的vbr文件(包含服務(wù)器組件的object id等注冊(cè)信息)。
3.這時(shí),會(huì)彈出“remote connection details”對(duì)話框。選擇使用remote automation或dcom;輸入服務(wù)器的機(jī)器名。如果使用remote automation,還需確定通訊協(xié)議,如tcp/ip等。驗(yàn)證級(jí)別用來保證客戶端與服務(wù)器間通訊的安全性。這是一個(gè)較為復(fù)雜的問題,為了簡(jiǎn)化期間,選擇none即可。
4.返回“activex server components”畫面。如果你的程序使用多個(gè)遠(yuǎn)程組件,可逐一加入。相關(guān)的本地組件,可按“add local”一一加入。注意,系統(tǒng)缺省會(huì)將一些組件當(dāng)作本地組件,不要將同一組件即當(dāng)作遠(yuǎn)程組件,又當(dāng)作本地組件。
四、安裝與使用
windows nt 4.0支持dcom,可直接安裝dcom分布式應(yīng)用。對(duì)于windows 95,需要安裝附加程序,以支持dcom分布式應(yīng)用。但,windows 95可直接安裝remote automation應(yīng)用。
remote automation模式:
分別在服務(wù)器及客戶端機(jī)器上安裝相應(yīng)程序。在服務(wù)器端,要先啟動(dòng)automation manager(autmgr32.exe,安裝程序會(huì)自動(dòng)將該文件拷到系統(tǒng)目錄下),客戶端才可建立連接。這種模式對(duì)操作系統(tǒng)要求較低,windows 3.1,windows 95,windows nt等均可做服務(wù)器或客戶端。
本方法提供的安全性較差,無法限制那些用戶可以連接或不可以連接。不過,系統(tǒng)還是提供了許多安全管理措施。讀者在學(xué)習(xí)時(shí)不妨做簡(jiǎn)化處理:
在服務(wù)器端啟動(dòng)remote automation connection manager(racmgr32.exe),在左側(cè)選相應(yīng)的server組件,在右側(cè)client access欄目下,選擇allow all remote creates。
關(guān)于客戶端的安裝,我們前面作過討論。利用remote automation connection manager(racmgr32.exe),在server connection欄目下,我們可以隨時(shí)調(diào)整服務(wù)器組件的分布位置。
remote automation這種模式提供了很大的靈活性,在安全性要求不高的場(chǎng)合,可以使用該模式。
dcom模式:
要構(gòu)造dcom應(yīng)用,服務(wù)器端最好使用windows nt server或windows nt workstation,客戶端可使用windows nt或windows95。這也符合實(shí)際應(yīng)用的策略,server component要求有較高的可靠性,一般分布在專用服務(wù)器上。
在服務(wù)器組件安裝完畢后,要確定rpc service是啟動(dòng)的。在客戶端能夠建立連接之前,還需要配置訪問權(quán)限。
為了簡(jiǎn)單期間,你可以這樣做:
1.運(yùn)行dcomcfg.exe(在系統(tǒng)目錄下)。
2.選擇相應(yīng)組件,設(shè)置其properties。
3.在location欄目下,設(shè)為:run app on this computer;在security欄目下,選擇定制安全性,并將權(quán)限給everyone full control。
在客戶端的機(jī)器上,通過dcomcfg.exe,在location欄目下,可以指定服務(wù)器組件的安裝位置。
在windows 95下構(gòu)建dcom應(yīng)用的特殊考慮:
如果使用windows 95做客戶端,應(yīng)從VB的光盤或從www.microsoft.com找如下兩個(gè)文件:dcom95.exe,dcm95cfg.exe。安裝并重新啟動(dòng)機(jī)器即可。
如server端使用windows 95,須考慮下列問題:
1.安全性將受到限制。
2.應(yīng)手工在startup中加進(jìn)server組件的啟動(dòng)程序。
3.運(yùn)行rpcss.exe后,客戶端才可建立連接。
4.由于server component是一個(gè)class,當(dāng)沒有客戶程序參照它時(shí),它會(huì)自動(dòng)終止?墒,windows 95沒有自動(dòng)啟動(dòng)它的機(jī)制。所以,要保證server component不會(huì)從內(nèi)存卸載。辦法是:在server component中加入一個(gè)form,visible為false。程序從form啟動(dòng)。
5.應(yīng)從VB的光盤或從www.microsoft.com找如下兩個(gè)文件:dcom95.exe,dcm95cfg.exe。安裝并重新啟動(dòng)機(jī)器。
6.手工改變注冊(cè)表:hkey_local_machine\software\microsoft\ole\enable remote connection改為“y"。否則,會(huì)出現(xiàn)“run time error,active component cannot be create”
7.如同在windows nt上一樣,運(yùn)行dcomcfg.exe并進(jìn)行配置。