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

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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用D技术在远程教育中实现组件化的网络虚拟实验室探讨.doc

  应用D技术在远程教育中实现组件化的网络虚拟实验室探讨 摘要:为了使虚拟实验室适合远程 网络 教学的需要,使它能够在网络上工作,利用D技术以C/S方式实现了组件化的虚拟实验室。将模拟 计算 部分作为服务器端,界面输入/输出作为客户端。在多用户的情况下D没有提供分布式策略,则利用调度对象来平衡负载,从而引入分布式处理方式。 关键词:远程 教育 ;D;虚拟实验室;客户/服务器(C/S) Abstract: In order to make the virtual laboratory for teaching the need for long-distance ulation as part of the server-side, the interface I / O as a client. In many cases, users did not provide D Distributed strategy, the use of targeted scheduling to balance the load, so the introduction of distributed processing oteProcedureCall)来完成的。客户与对象必须通过Proxy和Stub来进行通信。Proxy工作在客户进程中,Stub工作在服务器进程中。此外,D提供了所有在网络上工作的软件都应有的特殊性与安全性。 3/D在 网络 虚拟实验室中的 应用 从程序设计的角度来看,/D的结构是这样的:对象是构建组件的基本元素,而服务器为组件提供进程内/外的服务,提供了组件工作的场所。对象是一个自包含的结构,提供一定的功能,它不能直接被客户使用,客户必须通过接口访问它。对象必须通过接口来表现自己的功能,甚至对象的创建都不能由客户直接完成,对象的创建必须借助一个特殊的对象,即类厂来完成。 对于客户,它可以是一个组件对象也可以是一个支持的普通程序。它通过API来调用类厂创建对象,并增加引用计数,来决定对象的生存期。这样库和服务器会在适当的时候卸载。 虽然C++对象和对象有本质的区别,但是它们在二进制一级的构造上有一定的相似性,C++对象和对象都使用VTable。而且,C++的对象描述能力使它很容易创建。因此C++是实现的最佳选择。VisualC++在CO M编程方面提供了两种方式:一种是MFC(MicrosoftFoundationClass);一种是ATL(ActiveTemplateLibrary)。MFC是以嵌套类的方式来实现的;ATL大量地使用于模板,采用多重继承的方式来实现。但不管是MFC还是ATL,都为开发软件提供了极大的方便,很多的处理都由MFC提供,比如引用计数、服务器锁计数、类厂等。尽管MFC和ATL都能实现,但MFC是一种开发完全应用程序的有效手段。相比之下,ATL是专为设计的。所以,ATL更适合创建快速小型化的组件。 3.1服务器 在本文设计的网络虚拟实验室系统中,将模拟 计算 部分作为服务器。对于单用户服务器的情况,可以使用STA(SingleThreadApartment)线程模型。在这种情况下,分作为一个对象。对于在这个组件来说,它至少应该提供一个Simulator对象、一个Isimulate接口和两种 方法 。 interfaceIDatdT’:IUnknoent)方式工作。调度对象负责建立服务对象Simulator,维护主机列表COSERVERINFOServer[N]、对象列表ISimulate*pISimulate[N]和对象状态列表IntState[N]。主机列表保存主机名字,对象列表存放对象接口指针,状态列表是一个对象的状态值。对于对象来讲,它有三种状态:(1)未创建或创建失败;(2)忙;(3)闲。三个列表都以全局变量的形式出现。由于使用了STA,可以不必考虑对象的同步 问题 。但是,多个同类对象访问全局变量仍然可能造成对象在线程上的安全问题。因此,本文使用临界区(CriticalSection)来同步。此外,调度对象是一个可连接对象,它必须与服务对象通信并获得服务对象的状态。 调度对象负责在主机列表指定的主机上创建服务对象,并初始化。所有的客户在需要服务的时候应向调度对象发出请求。当有客户向调度对象请求服务时,调度对象检索主机列表、对象列表和状态列表,在选定主机上查询并检查对象的有效性,获取服务对象接口指针,并返回给客户,然后客户与服务对象通信。根据的特性,此时客户和服务对象之间的通信是直接进行的,不经过调度对象。调度对象根据什么原则来获取某个主机上的对象是一个策略上的问题,实际应用中必须考虑主机的负载平衡。对于复杂的系统,这种策略可能相当的复杂。然而,为了简单起

您可能关注的文档

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档