刘峥嵘
(广东茂名幼儿师范专科学校,理学院, 广东,茂名 525000)
实时分布对象是一种分布式主动对象,其包含了分布式主动对象的两方面特征,一种是该对象与客户端同时运行于不同的地址空间,另一种是它主动定义了公开的调用接口,可以实时接收多种用户请求,并向其提供相应的服务。实时分布的本质是实时并行,而要实现实时并行就需要对分布式对象控制编程,最理想状态下的实时分布对象编程方法应该具有并行分布式高水平的编程风格,实时分布对象编程是解决并行软件互操作问题的一种编程技术,通过编程对实时分布对象开发出具有良好分布式效果的软件。但是随着网络技术的快速发展,实时分布对象编程方法也是五花八门,比如基于CORBA实时分布对象编程方法、基于YUO实时分布对象编程方法、基于Java实时分布对象编程方法等,以上提出的编程方法由于编程过程较复杂,没有完全达到理想的效果,开发出来的软件质量较差,传统编程方法还不能够完全满足应用需求,为此本文想要运用模糊数学理论设计出一种新的实时分布对象编程方法[1]。20世纪70年代美国纽约大学控制论专家Zaduh L.A教授在一篇开创性论文中提出了模糊数学概念,它标志着模糊数学理论的诞生,后来随着模糊数学理论的飞速发展,模糊数学理论被应用到了多个领域中。本文利用模糊数据理论计算出实时分布对象,形成一种基于模糊数学理论的实时分布对象编程方法,并且通过与传统编程方法进行对比实验,来检验本文设计方法是否能满足应用需求和为实时分布对象编程提供理论依据。
为了实时分布对象编程,本文设计的方法主要是以模糊数学作为理论指导,利用模糊数学理论组建C++或者Java类库结构来开发应用程序接口,以此代替传统的计算机语言编辑器,用于高精度的实时分布对象编程。最终编程的实时分布对象要满足以下设计需求:具有过去、现在、将来的时间基准;能够实时统一远程或者本地用户终端发出的服务请求;能够具有从分布对象方法请求到结果返回的时限定义功能;具有时间触发行为;执行分布式的对象方法;实时的对象方法请求。根据以上实时分布对象功能需求,首先通过创建全局时间资源为计算网络节点中的实时并行对象提供时间资源,然后引入实时分布软件的构件来执行并行方法,通过构造合理的组件参数来实现传输和处理大参数集的多消息交换,通过创建实时对象服务请求API提供到达服务实时分布对象方法的存取路径,最后通过并行通道的构建实现了实时分布对象的编程。图1为基于模糊数学理论的实时分布对象编程流程图。
图1 基于模糊数学理论的实时分布对象编程流程图
为了产生有效的可并行的实时对象,首先必须创建全局时间资源,全局时间资源是为计算出网络节点中实时并行对象提供时间资源[2]。常用的创建全局时间资源的方法有绝对时间方法和相对时间方法,由于实时分布对象必须要通过编码“NOW”来获得并行对象的实时时间值,并且这个实时时间值还必须要与统一协调时间的当前数值相一致,如果不能满足这个条件,当不同地理位置的分布式对象都保留着不同的时间资源时,就无法达到实时分布对象的要求,并且相互作用下的分布对象将会导致不可预测的后果[3]。由于绝对时间方法创建的全局时间资源效果较差,所以此次采用相对时间方法来创建全局时间资源。首先以分布式网络中分布对象的起始时间为基准,即DSD-start-time,以ms作为并行对象所经历的相对时间值,根据分布式网络节点证实属于初始分布节点配置的所有并行节点已经做好准备,然后向所有初始分布对象部署DSD-start-time,当DSD-start-time都部署完毕后,所有部署完毕的并行对象开始执行各自的程序部分,以此实现了全局时间资源的创建。
传统编程方法开发的对象属于非分布式的消极对象,不具备适应网络配置实时动态转变的能力,导致无法满足相对复杂的分布式网络程序需求[4]。所以本文引入实时分布软件,实现实时分布对象在分布式网络节点间动态地移动。在分布式网络中,每个实时分布对象和它的服务方法都要具有唯一的、合法的对象名称。为了避免或减少使用符号名来调用服务方法带来的网络开销,当一个实时分布对象用符号名被具体声明时,比如“ RHO2” ,这个对象的每一个服务方法的符号名都会被注册到运行引擎上[5]。假设这个实时对象只有一个服务方法,则注册名只能为“RHO1” ,此时在每个潜在的客户实时分布对象终端节点上创建一个相对应的RHO1门对象,当RHO1门对象被具体声明时,对应的服务方法的符号名作为实时分布对象的参数,因此客户终端只能利用符号名来调用服务方法,而不使用其门对象,以此实现实时分布对象在分布式网络节点间动态地移动。
构造组件参数其实就是通过语言编程定义实时分布对象服务方法的参数结构。传统构建组件参数的方法是通过语言编辑器完成的,语言编辑器虽然操作简单,但是构造的组件参数会与实时分布对象的服务方法不符,所以本文通过把所有服务方法的参数打包成一个结构体变量,实时分布对象执行引擎把指针指向参数结构体变量,将参数结构体变量转化为消息上传到分布式网络中进行传输,以此完成组件参数的构造[6]。这种方法能够保证参数在分布式网络上的传输与处理大参数集的多消息交换。
任何实时分布对象语言都必须提供多种类型的服务请求,所以需要创建实时对象服务请求API,API是实时分布对象的接口,通过该接口来实现实时分布对象服务请求的调用[7]。实施对象服务请求API的创建可以运用门对象方法来实现,门对象可以提供服务方法的存取路径,为了简化实时分布对象服务请求的调用,可以将分布式对象服务请求的调用操作作为CLASS类[8]。当实时分布对象调用一个服务方法后,客户终端等待直到服务方法返回结果消息,为了实现这个过程,本文以模糊数学理论为理论依据,创建了一个模糊数学编码来实现实时分布对象服务请求的调用,图2为模糊数学编码图。
图2 模糊数学编码
在图2中,Blockingsr1给定的最后时间期限的类型是ms,可以说明该全局时间资源为相对时间,Blockingsr2给定的最后时间期限的类型也是ms,表明为相对时间,说明该编码的计算过程满足上文所建立的全局时间资源要求[9]。 通过模糊数学编码使实时分布对象的服务请求能够在最后期限之前返回到客户终端,以此实现实时对象服务请求API的创建。
最后需要构建一个并行通道,使实时分布对象的服务请求能够在分布式网络中顺畅地流通。为了并行通道也能满足实时分布对象远程服务方法的请求,本文使用数据成员的逻辑消息并行通道进行交换服务方法[10]。在并行通道设计时,首先构建2个RMMC结构的存取门,这2个存取门可以被注明为多个远程协作的实时分布对象的数据成员, 当数据成员通过存取门发布服务方式请求时,服务请求将会被直接传递到实时分布对象执行引擎的缓冲区中,通过执行引擎去执行,当请求执行完毕后,剩下的数据成员会以同样的方式陆续进行交换。该并行通道能够更有效率地实现实时分布对象服务方法的调用,以此实现基于模糊数学理论的实时分布对象编程[11]。
上文运用模糊数学理论设计了一个实时分布对象编程方法,为了证明该方法能够满足实时分布对象的编程需求,将其与传统方法进行对比实验,检验基于模糊数学理论的实时分布对象编程方法的有效性。下表为此次实验环境参数表。
使用2种方法对实时分布对象进行编程,向实时分布对象发布700个服务请求,对比实时分布对象的服务请求执行率。图3为服务请求执行率。
表1 实验环境参数表
图3 服务请求执行率
从图3中可以看出,使用本文设计的方法编程的实时分布对象对服务请求的平均执行率为87%,而传统方法编程的实时分布对象对服务请求的执行率平均为56%。说明此次设计的编程方法可以更好地满足服务请求的高效性。
本文将模糊数学理论应用到实时分布对象编程中,形成了一种新的编程方法,虽然在该方面取得了一定的研究成果,但是由于研究时间较短,该方法还存在一些不足之处,今后还需要对该方法进行深入研究。