张 威 王月基
(海军航空大学 葫芦岛 125001)
Vega Prime(以下简称VP)是目前流行的视景开发工具,在军事、民用各类视景仿真中得到广泛的应用。由于单机有限的计算资源限制,许多仿真环境需要多台计算机协作完成,形成了分布式的计算机仿真技术。VP对于分布式的仿真也提供了很好的支持。但是在实际的软件开发过程中,基于VP开发的分布式仿真程序,需要在每个节点部署相同的环境,体系结构相对死板,开发、调试、部署都极为不便。为解决上述问题,本文提出了一种基于Vega Prime环境和Web Service技术的软件中间件VPDR-W,为基于Vega Prime开发的计算机仿真软件开发提供便利。
IDC互联网数据中心对中间件的定义是:中间件(Middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。中间件在实现互连基础上,还实现应用之间的互操作:中间件是基于分布式处理的软件,最突出的特点是其网络通信功能[1]。
中间件屏蔽了操作系统以下的复杂性,为处于自己上层的应用软件提供运行与开发的环境,使得程序员可以将精力集中在业务方面,不必过多考虑程序在多个平台的移植问题,降低开发分布式软件的难度,帮助用户灵活、高效地开发和集成复杂的应用软件[2]。中间件技术的目标是实现物理空间与信息空间无缝融合,且在融合后的空间中,用户可以随时随地透明地获取所期望的计算服务[3~4]。
Web Service[5]是一种新型的 Web 应用程序,具有自包含、自描述以及模块化的特点,可以通过Web发布、查找和调用[6]。Web Service应具有如下特性:可描述,可以通过一种服务描述语言来描述;可发布,可以在注册中心注册其描述信息并发布;可查找,通过向注册服务器发送查询请求可以找到满足查询条件的服务,获取服务的绑定信息;可绑定,通过服务的描述信息可以生成可调用的服务实例或服务代理;可调用,使用服务描述信息中的绑定细节可以实现服务的远程调用;可组合,可以与其他服务组合在一起形成新的服务[7]。
图1展示了Web Services协议栈的组成,可以看到,在构建和使用Web Service时,主要用到以下几个关键的技术和规则:
图1 Web Services协议栈的组成
XML和XSD:可扩展的标记语言XML是Web Service平台中表示数据的基本格式。XML是由万维网协会(W3C)[8]创建,W3C制定的XML Schema XSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。
SOAP(Simple Object Access Protocol):简单对象访问协议,它规定了Web Services之间如何传递信息。SOAP规定了:传递信息的格式为XML;远程对象方法调用的格式;参数类型和XML格式之间的映射;异常处理以及其他的相关信息;WSDL(Web Service Description Language):Web Service描述语言,使用XML描述Web Service,包括访问和使用Web Service所必需的信息,定义该Web Service的位置、功能以及如何通信等描述信息。它是对一个程序的XML描述,把原来java或C#类的对象和方法描述成XML文件。
UDDI(Universal Description,Discovery and In⁃tegration):统一描述、发现和整合协议,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。
Web Service系统基于SOA模型,它的编程模型(如图2)包含三个组成部分:服务提供者—作为服务契约的服务接口以及作为服务实体的服务实现;服务使用者—也称为服务使用者或客户端,使用Web Service;注册中心—服务提供者可以将服务发布到注册中心,服务使用者在注册中心内查找服务,使之成为Web Service的代理。
图2 Web Service编程模型
分布式仿真是指采用协调一致的结构、标准、协议和数据库,通过计算机网络将分布在各地的仿真器互连,使人可以参与交互作用的一种综合环境,目前已广泛用于军用、商用等领域[9]。然而,随着仿真应用对大量的分布式数据和资源的需求程度不断提高,分布式仿真系统的复杂度也不断加大,无法满足当前计算机网络技术快速发展的需要。
VP是Multigen Paradigm 公司(MPI)在Vega基础上推出的新一代支持面向对象技术的实时视景驱动软件,基于Vega Scene Graph,同时包括Lynx Prime GUI(图形用户界面)工具,用户既可以用图形化的工具进行快速辅助配置,又可以用底层场景图形API创建用户特定功能;提供了对MetaFlight格式的支持,扩展性更强;可通过API函数对实体操作,简化了开发过程,缩短了开发时间,帮助用户快速、准确地开发实时三维仿真[10]。
VPDR-W遵循Web Service协议和编程范式,基于“软总线”+“软构件”[11]的体系结构。
VPDR-W底层为Web Service的内核,主要运行Web Service内核和SOAP协议,在此基础上运行VPDR-W服务端和客户端,其总体结构如图3所示。
图3 VPDR-W总体结构
VPDR-W客户端主要负责远程VPDR-W服务端注册监听服务,监听VPDR-W远程服务状态;VPDR-W服务端负责将Vega Prime的分布式仿真程序发布成Web Service,同时响应客户端的监听请求,当服务状态发生变化时,将服务主动推送给VPDR-W客户端。
3.2.1 用例分析
VPDR-W面向两类用户,从程序员的角度看,主要负责:编写Vega Prime分布式仿真程序;设置Vega Prime分布式仿真服务对象;运行Vega Prime分布式仿真服务对象实例。从最终用户的角度看,主要负责设置Vega Prime分布式仿真服务对象;运行Vega Prime分布式仿真服务对象实例。如图4所示。
3.2.2 序列分析
VPDR-W运行时主要包括四类对象Vega Prime分布式仿真客户端、VPDR-W客户端、VP⁃DR-W服务端以及Veg Prime分布式仿真主程序,四者之间的交互逻辑如图5所示。
图4 用例图
图5 序列图
自 适 应 是 中 间 件 软 件 的 主 要 特 征[12~15],VPDR-W的算法设计体现出其具有的动态自适应的特点。
3.3.1 服务状态校验算法
VPDR-W服务端需要根据设置好的服务对象的变化情况决定是否向客户端推送服务对象实例,如果服务对象没有发生变化则不推送,如果发生了变化则推送,其服务状态校验算法流程如图6所示。
图6 服务状态校验算法流程图
3.3.2 客户端视场范围动态分配算法
在Vega Prime分布式仿真程序当中,详细的配置信息存放在扩展名为“acf”的配置文件当中,其中包含了程序的总视场范围以及需要的通道数量,基于此,VPDR-W可以实现比较灵活的客户端视场范围动态配置,其客户端市场范围动态分配算法流程如图7所示。
图7 客户端视场范围动态分配算法流程图
StarWebService[16]是一个由国防科学技术大学计算机学院网络所设计实现的、遵循Web2.0规范的分布式软件计算平台。本文采用其作为底层Web Service层实现。
VPDR-W服务端主要包括VPDRWServiceLis⁃tener、VPDRWServiceSender、VPDRWMd5Checker、VPDRWServer等几个主要的类,其中VPDRWSer⁃viceListener是一个监听器类,主要实现监听基于UbiStar传送过来的远程VPDR-W客户端注册情况;VPDRWServiceSender类主要实现对发生变化的服务对象实例进行推送;VPDRWMd5Checker类主要实现基于MD5算法的对服务对象实例状态的校验;VPDRWServer是程序的入口类,调用其他几个类实现服务端程序的全部功能。如图8所示。
图8 VPDR-W服务端主要类图
VPDR-W客户端主要包括VPDRWServiceRe⁃ceiver、VPDRWClient等几个主要的类,其中VPDRWServiceReceiver主要实现接收远程推送过来的服务对象实例,并存放到相应位置;VPDRW⁃Client类是VPDR-W客户端的入口类,调用其他几个类实现客户端程序的全部功能。如图9所示。
图9 VPDR-W客户端主要类图
VPDR-W现已在我院某型飞机飞行仿真模拟器开发当中得到实际应用,下面是应用的实际场景(由于特殊原因,部分位置做了遮挡)。
在4号机部署VPDR-W服务端和Vega Prime分布式仿真主程序,设置总视场角为120°,在2、3号机部署VPDR-W客户端,服务端程序动态发现客户端数量,并为每个客户机分配视场角,写入配置文件,之后加载Vega Prime分布式仿真程序,显示效果如图10所示。
图10 VPDR-W三通道应用界面
在4号机部署VPDR-W服务端和Vega Prime分布式仿真主程序,设置总视场角为150°,在1、2、3、5号机部署VPDR-W客户端,服务端程序动态发现客户端数量,并为每个客户机分配视场角,写入配置文件,加载Vega Prime分布式仿真程序,显示效果如图11所示。
图11 VPDR-W五通道应用界面
原来的Vega Prime分布式仿真程序需要在客户机上一一手动进行配置,极其繁琐和死板。通过实际应用场景可以看出,VPDR-W可以根据分布式仿真程序的客户机情况灵活的自动进行配置,同时实时地传送服务对象实例,既简化了程序员的开发活动,又方便了最终用户的使用,效果比较理想。
本文基于Web Service和Vega Prime环境设计和实现了一个分布式仿真环境的软件中间件框架,实现了分布式仿真程序的动态和灵活的配置,在实际的应用中展现了良好的效果。但是存在一些不足,主要是由于Vega Prime是一个商业软件产品,不开放源代码,导致编程模式比较僵硬,在今后的工作中将考虑使用 OpenSceneGraph(OSG)[17]等开源分布式仿真环境来进一步进行优化,同时在底层中间件实现上可以考虑结合分布式OSGi[18]等技术路线。
[1]刘芳.分布式仿真系统中想定系统的设计与实现[D].北京:北京邮电大学,2007.
[2]田艳凤,魏娜,李培君.CORBA的基本原理及其应用[J].未来英才,2015:304-305.
[3]Weiser M.Computer for the 21st Century[J].Scientific American.1991,265(3):94-105.
[4]Saha D,Mukherjee A.Pervasive Computing:A Paradigm for the 21st Century[J].Computer.,36(3):25-31.
[5]尹兆冰,王加阳.Web Service及其关键技术研究综述[J].软件导刊,2010(02):121-123.
[6]Tsalgatidou A,Pilioura T.An overview of standards and related technology in Web Services[J].2002,12(2-3):135-162.
[7]杨涛,刘锦德.Web Services技术综述——一种面向服务的分布式计算模式[J]. 计算机应用,2004(08):1-4.
[8]万维网协会(W3C)[Z].1994.
[9]万虎,余明晖,杨庆,等.基于网格的分布式仿真综述[J]. 计算机仿真.2008(01):6-10.
[10]潜继成.Vega Prime集成运行环境设计[J].电脑编程技巧与维护,2010(06):36-39.
[11]黄文光.StarBus集成开发环境的设计与实现[D].长沙:国防科学技术大学,2007.
[12]Garlan D,Schmerl B,Cheng S W.Software Architec⁃ture-BasedSelf-Adaptation[M]//Autonomic Computing and Networking,2009:31-35.
[13]Niemel E,Latvakoski J.Survery of Requirements and So⁃lutions for Ubiqutous Software[C]//ACM Press,2004.
[14]Grimm R,Davis J,Lemar E,et al.System Support for Pervasive Applications[J].ACM Transactions on Com⁃puter Syetems.2004,22(4):421-486.
[15]Costa CA,Yamin A C,Geyer C.Toward a General Soft⁃ware Infrastructure for Ubiquitous Computing[J].IEEE Pervasive Computing,2008,7(11):64-73.
[16]刘必欣,王玉峰,周斌,等.Web服务运行支撑环境的研究与实现[J]. 计算机科学,2004(10):108-110.
[17]Openscenegraph.http://www.openscenegraph.org/[Z].2016.
[18]吴元立,张瞩熹,杨宏桥,等.分布式OSGi研究与发展[J].计算机应用研究,2010(11):4010-4014.