网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨

上传人:子 文档编号:43827115 上传时间:2018-06-07 格式:DOC 页数:7 大小:31KB
返回 下载 相关 举报
网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨_第1页
第1页 / 共7页
网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨_第2页
第2页 / 共7页
网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨_第3页
第3页 / 共7页
网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨_第4页
第4页 / 共7页
网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨》由会员分享,可在线阅读,更多相关《网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨(7页珍藏版)》请在金锄头文库上搜索。

1、网络远程教育网络远程教育- -应用应用 DCOMDCOM 技术在远程教育中实现组件化的网络虚拟技术在远程教育中实现组件化的网络虚拟实验室探讨实验室探讨摘要:为了使虚拟实验室适合远程网络教学的需要,使它能够在网络上工作,利用 DCOM 技术以 C/S 方式实现了组件化的虚拟实验室。将模拟计算部分作为服务器端,界面输入/输出作为客户端。在多用户的情况下 DCOM 没有提供分布式策略,则利用调度对象来平衡负载,从而引入分布式处理方式。关键词:远程教育;DCOM;虚拟实验室;客户服务器(C/S)Abstract:Inordertomakethevirtuallaboratoryforteachingt

2、heneedforlong-distancenetworktoenableittoworkonthenetwork,theuseofDCOMtechnologytoC/Sachievedthecomponentsofthevirtuallaboratory.Thesimulationaspartoftheserver-side,theinterfaceI/Oasaclient.Inmanycases,usersdidnotprovideDCOMDistributedstrategy,theuseoftargetedschedulingtobalancetheload,sotheintroduc

3、tionofdistributedprocessingway.Keywords:distanceeducation;DCOM;virtuallaboratory;client/server(C/S)前言随着 Internet 的不断扩大,日益增多的计算机正在连接到互联网上,以共享资源。于是远程教育作为一种新的教育模式被提上了议事日程,现代计算机技术和网络技术为远程教育的发展提供了强有力的技术保障。尤其是 WWW 浏览器技术和数据库技术的发展,使得教学活动不再受地域和时间上的限制,利用 Internet 就能进行实时或非实时的教与学,从而实现了跨越时空的学习。然而,大学实验室里许多实验课,在远程

4、教育的网上学习中将会有许多困难。如何在网络课件中解决好这个问题,对于进一步办好远程教育是具有重要实际意义的。本文利用DCOM(DistributedComponentObjectModule)技术,将单机板的虚拟电路实验系统升级为网络版的虚拟电路实验系统。虚拟电路实验系统是一个用于仿真电子线路实验的软件。用户通过界面在计算机屏幕上选用各种元器件搭建电路,测试波形,得到实验数据等结果,以模拟真实实验的方式使用户掌握有关电路方面的知识。从功能上讲,虚拟实验室系统分为两个模块:一个是仿真计算部分,它是整个系统的核心部分,负责输入数据的处理、大量的模拟计算,并向输出界面部分传送结果;另一个则包括输入界

5、面和输出界面两部分。输入部分完成用户电路搭建时的界面处理,从某种角度来讲,它完成了数据的采集。同样,输出界面完成结果的输出,如波形输出、数据输出等。为了满足远程教学的需要,必须将单机虚拟实验系统改造为可在网络上运行的系统。从通信的开销上来讲,Socket 是最合适的。但是 Socket 本身是面向通信的,有复杂的通信细节需要处理。而且,Socket 服务器对于客户来说,很难提供稳定的应用程序接口,一旦服务器发生了变化,客户必须相应地变化,不利于客户和服务器单独开发和维护。另外一种则是文本采用的COM(ComponentObjectModule)技术。1 组件对象模型(COM)现代的软件开发都以

6、模块方式进行。每个模块均有自己的功能,并与其它模块以接口进行通信。于是,复杂的软件系统就可以用搭积木的方式进行。这就是组件软件的基本思想。COM 就是实现软件组件化的一种努力。实际上,COM 是一种规定了组件之间的接口标准。COM 还引入了面向对象的思想,COM 对象是一个能完成一定功能的软件模块。COM对象是组件的基本构成,它以接口的方式向其它对象或软件提供服务。通常情况下,对象的服务与被服务都是客户服务器的关系。COM 对象不同于 C+对象。C+对象是类的实例。C+是面向对象的编程语言,是人们在源码级试图实现软件模块化的一种努力。COM 对象是二进制的规范。换言之,C+在源码级提供了代码重

7、用的便利,而 COM 是在二进制级提供了可重用性。COM 的二进制级重用是通过COM 对象工作来实现的。它主要有两种方式:(1)包容,一个对象通过利用另一对象的功能实现同样的接口。(2)聚合,一个对象直接将另一对象的接口提供给客户。由于 COM 的实现是在二进制级,而不是源码级,于是决定了COM 与语言的无关性。一个用 C 或 C+实现的 COM 可以与一个用BASIC 实现的客户正常地通信。因此,整个软件的一部分可以用一种语言开发,而另一部分可以使用其它语言。这给软件开发者在根据性能的要求做出编程语言选择时提供了方便。COM 的另一个特性是进程的透明性。一个组件可以有很多种形式出现,比如 D

8、LL,EXE等。DLL 形式的组件与客户程序工作在同一进程,EXE 组件工作在独立的进程。无论是进程内的组件还是进程外的组件,对于客户来讲都是同样的,客户无需关心进程间的通信。进程间的通信是复杂的,然而 COM 掩盖了这种复杂性。2 分布式组件对象模型(DCOM)COM 给软件开发带来了极大的便利。但是,在网络环境下,单机上的组件重用和进程透明性已不能满足需要,COM 必须扩展。Microsoft 的 DCOM 便是 COM 在网络环境下的无缝扩展,DCOM 能够支持在局域网、广域网,甚至在 Internet 上与不同计算机的对象之间的通信。使用 DCOM,应用程序可以在位置上达到分布性,从而

9、满足客户和应用的需求。DCOM 隐藏了网络通信的细节,在可以利用的网络协议的支持下,组件或客户无需关心对方组件的位置,便可以进行通信。因此 DCOM具有协议无关性。在网络环境下,组件之间的通信不像在 COM 的进程内或进程间的 LPC(LocalProcedureCall),而是以RPC(RemoteProcedureCall)来完成的。客户与 COM 对象必须通过Proxy 和 Stub 来进行通信。Proxy 工作在客户进程中,Stub 工作在服务器进程中。此外,DCOM 提供了所有在网络上工作的软件都应有的特殊性与安全性。3COMDCOM 在网络虚拟实验室中的应用从程序设计的角度来看,C

10、OMDCOM 的结构是这样的:对象是构建组件的基本元素,而服务器为组件提供进程内外的服务,提供了组件工作的场所。对象是一个自包含的结构,提供一定的功能,它不能直接被客户使用,客户必须通过接口访问它。对象必须通过接口来表现自己的功能,甚至对象的创建都不能由客户直接完成,对象的创建必须借助一个特殊的对象,即类厂来完成。对于客户,它可以是一个组件对象也可以是一个支持 COM 的普通程序。它通过 COMAPI 来调用类厂创建对象,并增加引用计数,来决定对象的生存期。这样 COM 库和 COM 服务器会在适当的时候卸载。虽然 C+对象和 COM 对象有本质的区别,但是它们在二进制一级的构造上有一定的相似

11、性,C+对象和 COM 对象都使用 VTable。而且,C+的对象描述能力使它很容易创建 COM。因此 C+是实现COM 的最佳选择。VisualC+在 COM 编程方面提供了两种方式:一种是MFC(MicrosoftFoundationClass);一种是ATL(ActiveTemplateLibrary)。MFC 是以嵌套类的方式来实现 COM的;ATL 大量地使用于模板,采用多重继承的方式来实现 COM。但不管是 MFC 还是 ATL,都为开发软件提供了极大的方便,很多的处理都由 MFC 提供,比如引用计数、服务器锁计数、类厂等。尽管 MFC和 ATL 都能实现 COM,但 MFC 是一

12、种开发完全应用程序的有效手段。相比之下,ATL 是专为 COM 设计的。所以,ATL 更适合创建快速小型化的 COM 组件。3.1 服务器在本文设计的网络虚拟实验室系统中,将模拟计算部分作为服务器。对于单用户服务器的情况,可以使用STA(SingleThreadApartment)线程模型。在这种情况下,分作为一个 COM 对象。对于在这个组件来说,它至少应该提供一个Simulator 对象、一个 Isimulate 接口和两种方法。interfaceIDatdT:IUnknownHRESULTInputData(in.);HRESULTOutputData(out.);这个对象是一个可连接对

13、象。在模拟算法完成之后,它必须向用户发出通知。而用户程序内置了一个接收器。客户使用InputData()向服务器传送采集的数据,服务器在处理数据完成之后,客户通过 OutputData()取得处理结果。对于多用户服务器,实际上只要简单地在这个 COM 组件中加入注册表信息,或者用 CoCreatelnst9nEX(),以主机信息为参数就可以在指定主机上创建对象,利用 DCOM 进行通信。位置透明性使客户很容易使用 DCOM。如果为客户指定相应的主机(即服务器),客户就可以创建并使用对象。3.2 多用户服务器的负载平衡在多用户的情况下,当用户的数量达到一定程度的时候,多个用户在主机上创建的对象实

14、例会使服务器的压力增大,从而造成服务器性能的下降,影响服务质量。当然,可以使用多个服务器来提供服务,人工地平衡多个服务器上的负载,但这将给维护带来极大的困难。一旦用户群动态地变化,服务器的负载平衡将被打破。显然,这种没有任何分布式策略的分布式 COM(DCOM)是不够的。虽然DCOM 提供了位置透明性,但是没有提供分布式的策略,分布式策略需要软件开发者来提供。因此,提供负载平衡是 DCOM 组件开发的一个重要任务。为了平衡多个服务器的负载,建立了如下图所示的系统结构。对于模拟计算的 COM 对象,为了避免多次重复地创建和释放,本文采用了服务对象。服务对象是已创建的 COM 对象实例。该系统中还

15、引入了简单的调度对象。调度对象是一个中间对象,它以STA(单线程 Apartment)方式工作。调度对象负责建立服务对象Simulator,维护主机列表 COSERVERINFOServerN、对象列表ISimulate*pISimulateN和对象状态列表 IntStateN。主机列表保存主机名字,对象列表存放对象接口指针,状态列表是一个对象的状态值。对于对象来讲,它有三种状态:(1)未创建或创建失败;(2)忙;(3)闲。三个列表都以全局变量的形式出现。由于使用了STA,可以不必考虑对象的同步问题。但是,多个同类对象访问全局变量仍然可能造成对象在线程上的安全问题。因此,本文使用临界区(Cri

16、ticalSection)来同步。此外,调度对象是一个可连接对象,它必须与服务对象通信并获得服务对象的状态。调度对象负责在主机列表指定的主机上创建服务对象,并初始化。所有的客户在需要服务的时候应向调度对象发出请求。当有客户向调度对象请求服务时,调度对象检索主机列表、对象列表和状态列表,在选定主机上查询并检查对象的有效性,获取服务对象接口指针,并返回给客户,然后客户与服务对象通信。根据 COM 的特性,此时客户和服务对象之间的通信是直接进行的,不经过调度对象。调度对象根据什么原则来获取某个主机上的对象是一个策略上的问题,实际应用中必须考虑主机的负载平衡。对于复杂的系统,这种策略可能相当的复杂。然而,为了简单起见,本文采用了以执行任务的对象在主机上的数量多少作为平衡负载的标准。在客户使用完毕对象后,对象激发一个调度对象事件,调度对象负责将对象状态复位。因此,调度对象是一个可连接对象,实现了一个接收器,接收来自服务对象的事件。此外,调度对象还负责将服务对象卸载。应该看到调度对象的引入增加了网络通信量,但对于采用分布式策略的系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号