网络远程教育应用DCOM技术在远程教育中实现组件化的网络虚拟实验室探讨_第1页
网络远程教育应用DCOM技术在远程教育中实现组件化的网络虚拟实验室探讨_第2页
网络远程教育应用DCOM技术在远程教育中实现组件化的网络虚拟实验室探讨_第3页
网络远程教育应用DCOM技术在远程教育中实现组件化的网络虚拟实验室探讨_第4页
网络远程教育应用DCOM技术在远程教育中实现组件化的网络虚拟实验室探讨_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络远程教育应用DCOM技术在远程教育中实现组件化的网络虚拟实验室探讨摘要:为了使虚拟实验室适合远程网络教学的需要,使它能够在网络上工作,利用DCOM技术以C/S方式实现了组件化的虚拟实验室。将模拟计算部分作为服务器端,界面输入/输出作为客户端。在多用户的情况下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的不断扩大,日益增多的计算机正在连接到互联网上,以共享资源。于是远程教育作为一种新的教育模式被提上了议事日程,现代计算机技术和网络技术为远程教育的发展提供了强有力的技术保障。尤其是WWW浏览器技术和数据库技术的发展,使得教学活动不再受地域和时间上的限制,利用Internet就能进行实时或非实时的教与学,从而实现了跨越时空的学习。然而,大学实验室里许多实验课,在远程教育的网上学习中将会有许多困难。如何在网络课件中解决好这个问题,对于进一步办好远程教育是具有重要实际意义的。本文利用DCOM(DistributedComponentObjectModule)技术,将单机板的虚拟电路实验系统升级为网络版的虚拟电路实验系统。虚拟电路实验系统是一个用于仿真电子线路实验的软件。用户通过界面在计算机屏幕上选用各种元器件搭建电路,测试波形,得到实验数据等结果,以模拟真实实验的方式使用户掌握有关电路方面的知识。从功能上讲,虚拟实验室系统分为两个模块:一个是仿真计算部分,它是整个系统的核心部分,负责输入数据的处理、大量的模拟计2分布式组件对象模型(DCOM)COM给软件开发带来了极大的便利。但是,在网络环境下,单机上的组件重用和进程透明性已不能满足需要,COM必须扩展。Microsoft的DCOM便是COM在网络环境下的无缝扩展,DCOM能够支持在局域网、广域网,甚至在Internet上与不同计算机的对象之间的通信。使用DCOM,应用程序可以在位置上达到分布性,从而满足客户和应用的需求。DCOM隐藏了网络通信的细节,在可以利用的网络协议的支持下,组件或客户无需关心对方组件的位置,便可以进行通信。因此DCOM具有协议无关性。在网络环境下,组件之间的通信不像在COM的进程内或进程间的LPC(LocalProcedureCall),而是以RPC(RemoteProcedureCall)来完成的。客户与COM对象必须通过Proxy和Stub来进行通信。Proxy工作在客户进程中,Stub工作在服务器进程中。此外,DCOM提供了所有在网络上工作的软件都应有的特殊性与安全性。3COM/DCOM在网络虚拟实验室中的应用从程序设计的角度来看,COM/DCOM的结构是这样的:对象是构建组件的基本元素,而服务器为组件提供进程内/外的服务,提供了组件工作的场所。对象是一个自包含的结构,提供一定的功能,它不能直接被客户使用,客户必须通过接口访问它。对象必须通过接口来表现自己的功能,甚至对象的创建都不能由客户直接完成,对象的创建必须借助一个特殊的对象,即类厂来完成。对于客户,它可以是一个组件对象也可以是一个支持COM的普通程序。它通过COMAPI来调用类厂创建对象,并增加引用计数,来决定对象的生存期。这样COM库和COM服务器会在适当的时候卸载。虽然C++对象和COM对象有本质的区别,但是它们在二进制一级的构造上有一定的相似性,C++对象和COM对象都使用VTable。而且,C++的对象描述能力使它很容易创建COM。因此C++是实现COM的最佳选择。VisualC++在COM编程方面提供了两种方式:一种是MFC(MicrosoftFoundationClass);一种是ATL(ActiveTemplateLibrary)。MFC是以嵌套类的方式来实现COM的;ATL大量地使用于模板,采用多重继承的方式来实现COM。但不管是MFC还是ATL,都为开发软件提供了极大的方便,很多的处理都由MFC提供,比如引用计数、服务器锁计数、类厂等。尽管MFC和ATL都能实现COM,但MFC是一种开发完全应用程序的有效手段。相比之下,ATL是专为COM设计的。所以,ATL更适合创建快速小型化的COM组件。3.1服务器在本文设计的网络虚拟实验室系统中,将模拟计算部分作为服务器。对于单用户服务器的情况,可以使用STA(SingleThreadApartment)线程模型。在这种情况下,分作为一个COM对象。对于在这个组件来说,它至少应该提供一个Simulator对象、一个Isimulate接口和两种方法。interfaceIDatdT’:IUnknown{HRESULTInputData([in]...);HRESULTOutputData([out]...);…};这个对象是一个可连接对象。在模拟算法完成之后,它必须向用户发出通知。而用户程序内置了一个接收器。客户使用InputData()向服务器传送采集的数据,服务器在处理数据完成之后,客户通过OutputData()取得处理结果。对于多用户服务器,实际上只要简单地在这个COM组件中加入注册表信息,或者用CoCreatelnst9nEX(),以主机信息为参数就可以在指定主机上创建对象,利用DCOM进行通信。位置透明性使客户很容易使用DCOM。如果为客户指定相应的主机(即服务器),客户就可以创建并使用对象。3.2多用户服务器的负载平衡在多用户的情况下,当用户的数量达到一定程度的时候,多个用户在主机上创建的对象实例会使服务器的压力增大,从而造成服务器性能的下降,影响服务质量。当然,可以使用多个服务器来提供服务,人工地平衡多个服务器上的负载,但这将给维护带来极大的困难。一旦用户群动态地变化,服务器的负载平衡将被打破。显然,这种没有任何分布式策略的分布式COM(DCOM)是不够的。虽然DCOM提供了位置透明性,但是没有提供分布式的策略,分布式策略需要软件开发者来提供。因此,提供负载平衡是DCOM组件开发的一个重要任务。为了平衡多个服务器的负载,建立了如下图所示的系统结构。对于模拟计算的COM对象,为了避免多次重复地创建和释放,本文采用了服务对象。服务对象是已创建的COM对象实例。该系统中还引入了简单的调度对象。调度对象是一个中间对象,它以STA(单线程Apartment)方式工作。调度对象负责建立服务对象Simulator,维护主机列表COSERVERINFOServer[N]、对象列表ISimulate*pISimulate[N]和对象状态列表IntState[N]。主机列表保存主机名字,对象列表存放对象接口指针,状态列表是一个对象的状态值。对于对象来讲,它有三种状态:(1)未创建或创建失败;(2)忙;(3)闲。三个列表都以全局变量的形式出现。由于使用了STA,可以不必考虑对象的同步问题。但是,多个同类对象访问全局变量仍然可能造成对象在线程上的安全问题。因此,本文使用临界区(CriticalSection)来同步。此外,调度对象是一个可连接对象,它必须与服务对象通信并获得服务对象的状态。调度对象负责在主机列表指定的主机上创建服务对象,并初始化。所有的客户在需要服务的时候应向调度对象发出请求。当有客户向调度对象请求服务时,调度对象检索主机列表、对象列表和状态列表,在选定主机上查询并检查对象的有效性,获取服务对象接口指针,并返回给客户,然后客户与服务对象通信。根据COM的特性,此时客户和服务对象之间的通信是直接进行的,不经过调度对象。调度对象根据什么原则来获取某个主机上的对象是一个策略上的问题,实际应用中必须考虑主机的负载平衡。对于复杂的系统,这种策略可能相当的复杂。然而,为了简单起见,本文采用了以执行任务的对象在主机上的数量多少作为平衡负载的标准。在客户使用完毕对象后,对象激发一个调度对象事件,调度对象负责将对象状态复位。因此,调度对象是一个可连接对象,实现了一个接收器,接收来自服务对象的事件。此外,调度对象还负责将服务对象卸载。应该看到调度对象的引入增加了网络通信量,但对于采用分布式策略的系统来说是必要的。实际上调度对象很大程度上起到了目录服务的作用。如果必要的话,调度对象加上适当的模块可以作为一个简单的中间管理模块,比如控制用户登录、限制用户数量等。3.3客户客户控制着虚拟实验室数据的采集和输出表现,它将直接面对用户。对于客户来讲,它只需要在数据处理的时候,在执行调度的主机上创建调度对象,本文来自范文中国网。调度对象负责返回可用的服务对象。客户将数据交给服务对象来处理,并取得输出值。在客户与服务对象通信的过程中,客户还必须接收来自服务对象激发的事件,所以客户必须内置接收器。4结束语本文使用了调度对象来实现负载的平衡,采用的平衡策略是以运行在主机上的对象数目作为衡量负载的标准,这对于简

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论