網(wǎng)絡遠程教育應用DCOM技術在遠程教育中實現(xiàn)組件化的網(wǎng)絡虛擬實驗室探討_第1頁
網(wǎng)絡遠程教育應用DCOM技術在遠程教育中實現(xiàn)組件化的網(wǎng)絡虛擬實驗室探討_第2頁
網(wǎng)絡遠程教育應用DCOM技術在遠程教育中實現(xiàn)組件化的網(wǎng)絡虛擬實驗室探討_第3頁
網(wǎng)絡遠程教育應用DCOM技術在遠程教育中實現(xiàn)組件化的網(wǎng)絡虛擬實驗室探討_第4頁
網(wǎng)絡遠程教育應用DCOM技術在遠程教育中實現(xiàn)組件化的網(wǎng)絡虛擬實驗室探討_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

網(wǎng)絡遠程教育應用DCOM技術在遠程教育中實現(xiàn)組件化的網(wǎng)絡虛擬實驗室探討摘要:為了使虛擬實驗室適合遠程網(wǎng)絡教學的需要,使它能夠在網(wǎng)絡上工作,利用DCOM技術以C/S方式實現(xiàn)了組件化的虛擬實驗室。將模擬計算部分作為服務器端,界面輸入/輸出作為客戶端。在多用戶的情況下DCOM沒有提供分布式策略,則利用調度對象來平衡負載,從而引入分布式處理方式。關鍵詞:遠程教育;DCOM;虛擬實驗室;客戶/服務器(C/S)Abstract:Inordertomakethevirtuallaboratoryforteachingtheneedforlong-distancenetworktoenableittoworkonthenetwork,theuseofDCOMtechnologytoC/Sachievedthecomponentsofthevirtuallaboratory.Thesimulationaspartoftheserver-side,theinterfaceI/Oasaclient.Inmanycases,usersdidnotprovideDCOMDistributedstrategy,theuseoftargetedschedulingtobalancetheload,sotheintroductionofdistributedprocessingway.Keywords:distanceeducation;DCOM;virtuallaboratory;client/server(C/S)前言隨著Internet的不斷擴大,日益增多的計算機正在連接到互聯(lián)網(wǎng)上,以共享資源。于是遠程教育作為一種新的教育模式被提上了議事日程,現(xiàn)代計算機技術和網(wǎng)絡技術為遠程教育的發(fā)展提供了強有力的技術保障。尤其是WWW瀏覽器技術和數(shù)據(jù)庫技術的發(fā)展,使得教學活動不再受地域和時間上的限制,利用Internet就能進行實時或非實時的教與學,從而實現(xiàn)了跨越時空的學習。然而,大學實驗室里許多實驗課,在遠程教育的網(wǎng)上學習中將會有許多困難。如何在網(wǎng)絡課件中解決好這個問題,對于進一步辦好遠程教育是具有重要實際意義的。本文利用DCOM(DistributedComponentObjectModule)技術,將單機板的虛擬電路實驗系統(tǒng)升級為網(wǎng)絡版的虛擬電路實驗系統(tǒng)。虛擬電路實驗系統(tǒng)是一個用于仿真電子線路實驗的軟件。用戶通過界面在計算機屏幕上選用各種元器件搭建電路,測試波形,得到實驗數(shù)據(jù)等結果,以模擬真實實驗的方式使用戶掌握有關電路方面的知識。從功能上講,虛擬實驗室系統(tǒng)分為兩個模塊:一個是仿真計算部分,它是整個系統(tǒng)的核心部分,負責輸入數(shù)據(jù)的處理、大量的模擬計2分布式組件對象模型(DCOM)COM給軟件開發(fā)帶來了極大的便利。但是,在網(wǎng)絡環(huán)境下,單機上的組件重用和進程透明性已不能滿足需要,COM必須擴展。Microsoft的DCOM便是COM在網(wǎng)絡環(huán)境下的無縫擴展,DCOM能夠支持在局域網(wǎng)、廣域網(wǎng),甚至在Internet上與不同計算機的對象之間的通信。使用DCOM,應用程序可以在位置上達到分布性,從而滿足客戶和應用的需求。DCOM隱藏了網(wǎng)絡通信的細節(jié),在可以利用的網(wǎng)絡協(xié)議的支持下,組件或客戶無需關心對方組件的位置,便可以進行通信。因此DCOM具有協(xié)議無關性。在網(wǎng)絡環(huán)境下,組件之間的通信不像在COM的進程內或進程間的LPC(LocalProcedureCall),而是以RPC(RemoteProcedureCall)來完成的??蛻襞cCOM對象必須通過Proxy和Stub來進行通信。Proxy工作在客戶進程中,Stub工作在服務器進程中。此外,DCOM提供了所有在網(wǎng)絡上工作的軟件都應有的特殊性與安全性。3COM/DCOM在網(wǎng)絡虛擬實驗室中的應用從程序設計的角度來看,COM/DCOM的結構是這樣的:對象是構建組件的基本元素,而服務器為組件提供進程內/外的服務,提供了組件工作的場所。對象是一個自包含的結構,提供一定的功能,它不能直接被客戶使用,客戶必須通過接口訪問它。對象必須通過接口來表現(xiàn)自己的功能,甚至對象的創(chuàng)建都不能由客戶直接完成,對象的創(chuàng)建必須借助一個特殊的對象,即類廠來完成。對于客戶,它可以是一個組件對象也可以是一個支持COM的普通程序。它通過COMAPI來調用類廠創(chuàng)建對象,并增加引用計數(shù),來決定對象的生存期。這樣COM庫和COM服務器會在適當?shù)臅r候卸載。雖然C++對象和COM對象有本質的區(qū)別,但是它們在二進制一級的構造上有一定的相似性,C++對象和COM對象都使用VTable。而且,C++的對象描述能力使它很容易創(chuàng)建COM。因此C++是實現(xiàn)COM的最佳選擇。VisualC++在COM編程方面提供了兩種方式:一種是MFC(MicrosoftFoundationClass);一種是ATL(ActiveTemplateLibrary)。MFC是以嵌套類的方式來實現(xiàn)COM的;ATL大量地使用于模板,采用多重繼承的方式來實現(xiàn)COM。但不管是MFC還是ATL,都為開發(fā)軟件提供了極大的方便,很多的處理都由MFC提供,比如引用計數(shù)、服務器鎖計數(shù)、類廠等。盡管MFC和ATL都能實現(xiàn)COM,但MFC是一種開發(fā)完全應用程序的有效手段。相比之下,ATL是專為COM設計的。所以,ATL更適合創(chuàng)建快速小型化的COM組件。3.1服務器在本文設計的網(wǎng)絡虛擬實驗室系統(tǒng)中,將模擬計算部分作為服務器。對于單用戶服務器的情況,可以使用STA(SingleThreadApartment)線程模型。在這種情況下,分作為一個COM對象。對于在這個組件來說,它至少應該提供一個Simulator對象、一個Isimulate接口和兩種方法。interfaceIDatdT’:IUnknown{HRESULTInputData([in]...);HRESULTOutputData([out]...);…};這個對象是一個可連接對象。在模擬算法完成之后,它必須向用戶發(fā)出通知。而用戶程序內置了一個接收器??蛻羰褂肐nputData()向服務器傳送采集的數(shù)據(jù),服務器在處理數(shù)據(jù)完成之后,客戶通過OutputData()取得處理結果。對于多用戶服務器,實際上只要簡單地在這個COM組件中加入注冊表信息,或者用CoCreatelnst9nEX(),以主機信息為參數(shù)就可以在指定主機上創(chuàng)建對象,利用DCOM進行通信。位置透明性使客戶很容易使用DCOM。如果為客戶指定相應的主機(即服務器),客戶就可以創(chuàng)建并使用對象。3.2多用戶服務器的負載平衡在多用戶的情況下,當用戶的數(shù)量達到一定程度的時候,多個用戶在主機上創(chuàng)建的對象實例會使服務器的壓力增大,從而造成服務器性能的下降,影響服務質量。當然,可以使用多個服務器來提供服務,人工地平衡多個服務器上的負載,但這將給維護帶來極大的困難。一旦用戶群動態(tài)地變化,服務器的負載平衡將被打破。顯然,這種沒有任何分布式策略的分布式COM(DCOM)是不夠的。雖然DCOM提供了位置透明性,但是沒有提供分布式的策略,分布式策略需要軟件開發(fā)者來提供。因此,提供負載平衡是DCOM組件開發(fā)的一個重要任務。為了平衡多個服務器的負載,建立了如下圖所示的系統(tǒng)結構。對于模擬計算的COM對象,為了避免多次重復地創(chuàng)建和釋放,本文采用了服務對象。服務對象是已創(chuàng)建的COM對象實例。該系統(tǒng)中還引入了簡單的調度對象。調度對象是一個中間對象,它以STA(單線程Apartment)方式工作。調度對象負責建立服務對象Simulator,維護主機列表COSERVERINFOServer[N]、對象列表ISimulate*pISimulate[N]和對象狀態(tài)列表IntState[N]。主機列表保存主機名字,對象列表存放對象接口指針,狀態(tài)列表是一個對象的狀態(tài)值。對于對象來講,它有三種狀態(tài):(1)未創(chuàng)建或創(chuàng)建失??;(2)忙;(3)閑。三個列表都以全局變量的形式出現(xiàn)。由于使用了STA,可以不必考慮對象的同步問題。但是,多個同類對象訪問全局變量仍然可能造成對象在線程上的安全問題。因此,本文使用臨界區(qū)(CriticalSection)來同步。此外,調度對象是一個可連接對象,它必須與服務對象通信并獲得服務對象的狀態(tài)。調度對象負責在主機列表指定的主機上創(chuàng)建服務對象,并初始化。所有的客戶在需要服務的時候應向調度對象發(fā)出請求。當有客戶向調度對象請求服務時,調度對象檢索主機列表、對象列表和狀態(tài)列表,在選定主機上查詢并檢查對象的有效性,獲取服務對象接口指針,并返回給客戶,然后客戶與服務對象通信。根據(jù)COM的特性,此時客戶和服務對象之間的通信是直接進行的,不經(jīng)過調度對象。調度對象根據(jù)什么原則來獲取某個主機上的對象是一個策略上的問題,實際應用中必須考慮主機的負載平衡。對于復雜的系統(tǒng),這種策略可能相當?shù)膹碗s。然而,為了簡單起見,本文采用了以執(zhí)行任務的對象在主機上的數(shù)量多少作為平衡負載的標準。在客戶使用完畢對象后,對象激發(fā)一個調度對象事件,調度對象負責將對象狀態(tài)復位。因此,調度對象是一個可連接對象,實現(xiàn)了一個接收器,接收來自服務對象的事件。此外,調度對象還負責將服務對象卸載。應該看到調度對象的引入增加了網(wǎng)絡通信量,但對于采用分布式策略的系統(tǒng)來說是必要的。實際上調度對象很大程度上起到了目錄服務的作用。如果必要的話,調度對象加上適當?shù)哪K可以作為一個簡單的中間管理模塊,比如控制用戶登錄、限制用戶數(shù)量等。3.3客戶客戶控制著虛擬實驗室數(shù)據(jù)的采集和輸出表現(xiàn),它將直接面對用戶。對于客戶來講,它只需要在數(shù)據(jù)處理的時候,在執(zhí)行調度的主機上創(chuàng)建調度對象,本文來自范文中國網(wǎng)。調度對象負責返回可用的服務對象??蛻魧?shù)據(jù)交給服務對象來處理,并取得輸出值。在客戶與服務對象通信的過程中,客戶還必須接收來自服務對象激發(fā)的事件,所以客戶必須內置接收器。4結束語本文使用了調度對象來實現(xiàn)負載的平衡,采用的平衡策略是以運行在主機上的對象數(shù)目作為衡量負載的標準,這對于簡

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論