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