好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

大学毕业论文之网络远程教育-应用dcom技术在远程教育中实现组件化的网络虚拟实验室探讨.doc

7页
  • 卖家[上传人]:kms****20
  • 文档编号:37326158
  • 上传时间:2018-04-14
  • 文档格式:DOC
  • 文档大小:31KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 大学毕业论文之网络远程教育大学毕业论文之网络远程教育- -应用应用 DCOMDCOM 技术在远程教育中实现组技术在远程教育中实现组件化的网络虚拟实验室探讨件化的网络虚拟实验室探讨摘要:为了使虚拟实验室适合远程网络教学的需要,使它能够在网络上工作,利用 DCOM 技术以 C/S 方式实现了组件化的虚拟实验室将模拟计算部分作为服务器端,界面输入/输出作为客户端在多用户的情况下 DCOM 没有提供分布式策略,则利用调度对象来平衡负载,从而引入分布式处理方式 关键词:远程教育;DCOM;虚拟实验室;客户/服务器(C/S) Abstract: In order to make the virtual laboratory for teaching the need for long-distance network to enable it to work on the network, the use of DCOM technology to C / S achieved the components of the virtual laboratory. The simulation as part of the server-side, the interface I / O as a client. In many cases, users did not provide DCOM Distributed strategy, the use of targeted scheduling to balance the load, so the introduction of distributed processing way. Key words: distance education; DCOM; virtual laboratory; client / server (C / S) 前言 随着 Internet 的不断扩大,日益增多的计算机正在连接到互联网上,以共享资源。

      于是远程教育作为一种新的教育模式被提上了议事日程,现代计算机技术和网络技术为远程教育的发展提供了强有力的技术保障尤其是 WWW 浏览器技术和数据库技术的发展,使得教学活动不再受地域和时间上的限制,利用 Internet 就能进行实时或非实时的教与学,从而实现了跨越时空的学习然而,大学实验室里许多实验课,在远程教育的网上学习中将会有许多困难如何在网络课件中解决好这个问题,对于进一步办好远程教育是具有重要实际意义的本文利用 DCOM(Distributed Component Object Module)技术,将单机板的虚拟电路实验系统升级为网络版的虚拟电路实验系统 虚拟电路实验系统是一个用于仿真电子线路实验的软件用户通过界面在计算机屏幕上选用各种元器件搭建电路,测试波形,得到实验数据等结果,以模拟真实实验的方式使用户掌握有关电路方面的知识从功能上讲,虚拟实验室系统分为两个模块:一个是仿真计算部分,它是整个系统的核心部分,负责输入数据的处理、大量的模拟计算,并向输出界面部分传送结果;另一个则包括输入界面和输出界面两部分输入部分完成用户电路搭建时的界面处理,从某种角度来讲,它完成了数据的采集。

      同样,输出界面完成结果的输出,如波形输出、数据输出等 为了满足远程教学的需要,必须将单机虚拟实验系统改造为可在网络上运行的系统从通信的开销上来讲,Socket 是最合适的但是Socket 本身是面向通信的,有复杂的通信细节需要处理而且,Socket 服务器对于客户来说,很难提供稳定的应用程序接口,一旦服务器发生了变化,客户必须相应地变化,不利于客户和服务器单独开发和维护另外一种则是文本采用的 COM(Component Object Module)技术 1 组件对象模型(COM) 现代的软件开发都以模块方式进行每个模块均有自己的功能,并与其它模块以接口进行通信于是,复杂的软件系统就可以用搭积木的方式进行这就是组件软件的基本思想COM 就是实现软件组件化的一种努力 实际上,COM 是一种规定了组件之间的接口标准COM 还引入了面向对象的思想,COM 对象是一个能完成一定功能的软件模块COM 对象是组件的基本构成,它以接口的方式向其它对象或软件提供服务通常情况下,对象的服务与被服务都是客户/服务器的关系COM对象不同于 C++对象C++对象是类的实例C++是面向对象的编程语言,是人们在源码级试图实现软件模块化的一种努力。

      COM 对象是二进制的规范换言之,C++在源码级提供了代码重用的便利,而COM 是在二进制级提供了可重用性COM 的二进制级重用是通过 COM对象工作来实现的它主要有两种方式:(1)包容,一个对象通过利用另一对象的功能实现同样的接口2)聚合,一个对象直接将另一对象的接口提供给客户 由于 COM 的实现是在二进制级,而不是源码级,于是决定了 COM 与语言的无关性一个用 C 或 C++实现的 COM 可以与一个用 BASIC 实现的客户正常地通信因此,整个软件的一部分可以用一种语言开发,而另一部分可以使用其它语言这给软件开发者在根据性能的要求做出编程语言选择时提供了方便COM 的另一个特性是进程的透明性一个组件可以有很多种形式出现,比如 DLL,EXE 等DLL形式的组件与客户程序工作在同一进程,EXE 组件工作在独立的进程无论是进程内的组件还是进程外的组件,对于客户来讲都是同样的,客户无需关心进程间的通信进程间的通信是复杂的,然而COM 掩盖了这种复杂性 2 分布式组件对象模型(DCOM) COM 给软件开发带来了极大的便利但是,在网络环境下,单机上的组件重用和进程透明性已不能满足需要,COM 必须扩展。

      Microsoft 的 DCOM 便是 COM 在网络环境下的无缝扩展,DCOM 能够支持在局域网、广域网,甚至在 Internet 上与不同计算机的对象之间的通信使用 DCOM,应用程序可以在位置上达到分布性,从而满足客户和应用的需求 DCOM 隐藏了网络通信的细节,在可以利用的网络协议的支持下,组件或客户无需关心对方组件的位置,便可以进行通信因此 DCOM 具有协议无关性在网络环境下,组件之间的通信不像在 COM 的进程内或进程间的 LPC(Local Procedure Call),而是以 RPC(Remote Procedure Call)来完成的客户与 COM 对象必须通过 Proxy 和Stub 来进行通信Proxy 工作在客户进程中,Stub 工作在服务器进程中此外,DCOM 提供了所有在网络上工作的软件都应有的特殊性与安全性3 COM/DCOM 在网络虚拟实验室中的应用 从程序设计的角度来看,COM/DCOM 的结构是这样的:对象是构建组件的基本元素,而服务器为组件提供进程内/外的服务,提供了组件工作的场所对象是一个自包含的结构,提供一定的功能,它不能直接被客户使用,客户必须通过接口访问它。

      对象必须通过接口来表现自己的功能,甚至对象的创建都不能由客户直接完成,对象的创建必须借助一个特殊的对象,即类厂来完成 对于客户,它可以是一个组件对象也可以是一个支持 COM 的普通程序它通过 COM API 来调用类厂创建对象,并增加引用计数,来决定对象的生存期这样 COM 库和 COM 服务器会在适当的时候卸载 虽然 C++对象和 COM 对象有本质的区别,但是它们在二进制一级的构造上有一定的相似性,C++对象和 COM 对象都使用 VTable而且,C++的对象描述能力使它很容易创建 COM因此 C++是实现 COM 的最佳选择Visual C++在 CO M 编程方面提供了两种方式:一种是 MFC(Microsoft Foundation Class);一种是 ATL(Active Template Library)MFC 是以嵌套类的方式来实现 COM 的;ATL 大量地使用于模板,采用多重继承的方式来实现 COM但不管是 MFC 还是 ATL,都为开发软件提供了极大的方便,很多的处理都由 MFC 提供,比如引用计数、服务器锁计数、类厂等尽管 MFC 和 ATL 都能实现 COM,但 MFC 是一种开发完全应用程序的有效手段。

      相比之下,ATL 是专为 COM 设计的所以,ATL更适合创建快速小型化的 COM 组件 3.1 服务器 在本文设计的网络虚拟实验室系统中,将模拟计算部分作为服务器对于单用户服务器的情况,可以使用 STA(Single Thread Apartment)线程模型在这种情况下,分作为一个 COM 对象对于在这个组件来说,它至少应该提供一个 Simulator 对象、一个Isimulate 接口和两种方法 interface IDatdT’: IUnknown { HRESULT InputData( [ in]... ); HRESULT OutputData( [ out]... ); … }; 这个对象是一个可连接对象在模拟算法完成之后,它必须向用户发出通知而用户程序内置了一个接收器客户使用 InputData()向服务器传送采集的数据,服务器在处理数据完成之后,客户通过OutputData()取得处理结果 对于多用户服务器,实际上只要简单地在这个 COM 组件中加入注册表信息,或者用 CoCreatelnst9nEX(),以主机信息为参数就可以在指定主机上创建对象,利用 DCOM 进行通信。

      位置透明性使客户很容易使用 DCOM如果为客户指定相应的主机(即服务器),客户就可以创建并使用对象 3.2 多用户服务器的负载平衡 在多用户的情况下,当用户的数量达到一定程度的时候,多个用户在主机上创建的对象实例会使服务器的压力增大,从而造成服务器性能的下降,影响服务质量当然,可以使用多个服务器来提供服务,人工地平衡多个服务器上的负载,但这将给维护带来极大的困难一旦用户群动态地变化,服务器的负载平衡将被打破显然,这种没有任何分布式策略的分布式 COM(DCOM)是不够的虽然 DCOM提供了位置透明性,但是没有提供分布式的策略,分布式策略需要软件开发者来提供因此,提供负载平衡是 DCOM 组件开发的一个重要任务为了平衡多个服务器的负载,建立了如下图所示的系统结构 对于模拟计算的 COM 对象,为了避免多次重复地创建和释放,本文采用了服务对象服务对象是已创建的 COM 对象实例该系统中还引入了简单的调度对象调度对象是一个中间对象,它以 STA(单线程 Apartment)方式工作调度对象负责建立服务对象 Simulator,维护主机列表 COSERVERINFO Server[N]、对象列表ISimulate*pISimulate[N]和对象状态列表 Int State[N]。

      主机列表保存主机名字,对象列表存放对象接口指针,状态列表是一个对象的状态值对于对象来讲,它有三种状态:(1)未创建或创建失败;(2)忙;(3)闲三个列表都以全局变量的形式出现由于使用了STA,可以不必考虑对象的同步问题但是,多个同类对象访问全局变量仍然可能造成对象程上的安全问题因此,本文使用临界区(Critical Section)来同步此外,调度对象是一个可连接对象,它必须与服务对象通信并获得服务对象的状态 调度对象负责在主机列表指定的主机上创建服务对象,并初始化所有的客户在需要服务的时候应向调度对象发出请求当有客户向调度对象请求服务时,调度对象检索主机列表、对象列表和状态列表,在选定主机上查询并检查对象的有效性,获取服务对象接口指针,并返回给客户,然后客户与服务对象通信根据 COM 的特性,此时客户和服务对象之间的通信是直接进行的,不经过调度对象调度对象根据什么原则来获取某个主机上的对象是一个策略上的问题,实际应用中必须考虑主机的负载平衡对于复杂的系统,这。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.