摘要:在飞机协同设计中,原始基于XML的应用适配器因XML数据格式在封装和解析过程中的复杂性,使得其运行过程中产生许多不必要的性能损耗。因此,本文基于JSON数据交换格式,用JSON替代XML;通过封装、解析、存储与压缩实验数据表明,JSON相较XML,在飞机协同设计环境下对系统整体存取时间性能平均有15.68%的提升,同时,在压缩率上也有一定的提升。由此可作为复杂背景下优化系统性能的一个可行的解决方案。
关键词:飞机协同设计; 适配器; JSON; XML
0 引 言
伴随着互联网技术的快速发展,网络传输数据的复杂性不断增大,针对各种特殊环境数据交换格式的改良也在不断的探索与研究中。JSON(Javascript Object Notation)数据格式在多年的发展中逐渐成为主流的网络数据传输交换格式[1]。JSON因其简易的语法与高速的传输和封装解析效率引起了近年来多方的研究与关注[2-6]。本文基于飞机协同设计的背景,对原有平台中采用XML数据交换格式的适配器进行改进,设计基于JSON数据交换格式的异构系统适配器,从而降低封装和解析数据传输格式的时间与网络带宽的消耗。
1 基于XML的飞机协同设计适配器模型
在飞机协同设计中,飞机部件制造厂商的各专业软件系统的编码语言可能不同,存储使用的数据库不同,操作系统不尽相同,因而存在各专业软件系统的数据格式不统一的问题。为了让各异构专业软件系统能够信息共享,需要基于飞机协同设计的应用适配器,将异构系统信息转化为飞机协同设计系统统一的数据格式,从而帮助各飞机部件厂商进行协同设计与开发。原始基于XML专业软件系统与总线的应用适配模型图如图1所示。
图1 基于XML的应用适配器模型图
1)数据提取模块:通过动态监控数据库中数据发生的变化,提取相关有效信息传递给封装器。
2)XML封装器:接收数据提取模块传递的本地特征的数据,进而将其序列化成能够在总线上传输的统一数据交换格式,即XML格式,然后,传递到实时总线中。
3)XML解析器:本地专业软件系统从总线中获得对自身有效的数据信息,XML解析器对相关信息进行反序列化,转换成本地能够理解并存储的数据。
4)数据更新模块:将接收到的反序列化数据更新到本地专业软件系统的数据库中。
该模型中使用的是XML封装器和XML解析器。其中,可扩展标记语言(eXtensible Markup Language, XML),是用来定义其它语言的一种元语言,其前身是标准通用标记语言(SGML)。它没有标签集,也没有语法规则,但是它有句法规则。任何XML文档对任何类型的应用以及正确的解析都必须是统一的结构,即每一个打开的标签都必须有匹配的结束标签,不得含有次序颠倒的标签,并且在语句构成上应符合技术规范的要求。
图2 飞机协同设计下XML格式传输数据示意图
图2中是基于飞机协同设计的XML传输数据文档示例。首先语法上需要对XML的版本及编码进行定义。开始标签与结束标签必须一一对应。DATAINFOLIST中包含有2个INFO子项,INFO子项中又分别含有关于飞机部件参数的数据信息。
基于XML的应用适配器中,首先从专业软件系统的数据库中对相关变化数据进行数据提取,然后传递给XML封装器封装成XML格式数据,即图2中格式。封装完毕后传输到实时总线共享给其他专业软件系统。在总线中存在本地专业软件系统需要的数据时,从实时总线中获取XML数据,由XML解析器解析成本地对象并存入数据库中。
因XML在封装和解析的过程中复杂性较高,相应地在系统存取上的时间消耗较大。又因为JSON数据格式因其简易的语法与高速的封装解析和良好的存取效率受到了广泛关注。所以,本文综合飞机协同设计的背景,采用了基于JSON数据交换格式来解决异构系统数据格式不统一的问题。
2 基于JSON的飞机协同设计适配器模型
JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于Javascript Programming Language Standard ECMA-262 3rd Edition-December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, Javascript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
2.1 JSON与XML对比
1)在可读性上,两者都具备很好的可读性,直观上JSON相对简洁清晰,而XML显得臃肿。
2)占用空间上,存储相同的信息,JSON比XML需要更少的空间。
3)易于服务端创建数据上,XML已经流行多年,有大量的解析工具,但随着软件技术的不断发展,JSON对各种语言的API支持也日趋完善。
4)在易于客户端处理方面,JSON的解析可以当做键值对来对待,而处理XML需要通过DOM树,非常繁琐且容易出错。
5)相较于量级,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。
6)在数据格式编码及解析的难度上,JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,XML则不然。
7)在扩展性上,XML的扩展得伴随着解析代码的变更,JSON只需添加键值对即可。
2.2 应用适配器模型
在保持原有应用适配器结构完整性的前提下,只针对XML封装器以及解析器进行替换。通过简单的替换,降低系统开销以及网络带宽的消耗。
图3 基于JSON的应用适配器模型图
1)JSON封装器:尽管划分成JSON封装器,但JSON的封装可以只是简单的数据排列与拼接,相较XML复杂的语法格式要简便得多并且达到的功能效果相同。
2)JSON解析器:通过本地专业软件系统采用的编程语言API接口将JSON数据转换为相应集合对象,然后逐层封装成本地数据模型对象。
图4 飞机协同设计下JSON格式传输数据示意图
图4中显示一条JSON数据,可以看作“键/值”(key/value)对来处理。DATAINFOLIST中包含有1个INFO子项,INFO子项中可以看作有2个数组,数组中分别含有关于飞机部件参数的数据信息。
基于JSON的应用适配器中,首先从专业软件系统的数据库中对相关变化数据进行数据提取,然后传递给JSON封装器封装成JSON格式数据,即图4中格式。封装完毕后传输到实时总线共享给其他专业软件系统。在总线中存在本地专业软件系统需要的数据时,从实时总线中获取JSON数据,由JSON解析器解析成本地对象并存入数据库中。尽管整体流程相似,但封装解析与存储的过程中JSON数据格式显著降低了系统存取性能的消耗。
3 实 验
实验分别采用JSON和XML数据交换格式,进行封装解析存储速率与压缩率对比。在Windows 7操作系统环境下,采用Java编程语言与Eclipse集成开发环境。
3.1 封装解析与存储
本文基于飞机协同设计过程中传递的数据作为实验的基础,分别对JSON和XML这2种数据传输格式进行封装解析并存入本地数据库的操作,通过实验结果的数据对比表现出两者的差异。在500,5000,10000条数据库数据上消耗时间对比(单位:ms),考虑到封装解析和存储的过程中可能出现延迟的情况,对每个测试区间进行10次测试取平均值,得到的时间消耗如表1所示。
表1 JSON与XML封装解析与存储时间消耗对比
表1中在MySQL环境下,500,5000,10000条数据量时,JSON与XML差值分别为4326,44571,79054。JSON相较XML在时耗上分别约有15.84%、15.63%、13.78%的提升。在Oracle环境下,500,5000,10000条数据量时,JSON与XML差值分别为4116,45180,94902。JSON相较XML在时耗上分别约有14.77%、15.94%、16.54%的提升。在SQL Server环境下,500,5000,10000条数据量时,JSON与XML差值分别为4740,43583,88349。JSON相较XML在时耗上分别约有17.42%、15.73%、15.47%的提升。
为了表现出随数据量的增加而带来的时间上的损耗差异,本文通过在样本范围内缩短选取节点的区间,并通过图5~图7表现。图中实线与虚线分别表示封装解析与存储XML与JSON在500到10000条数据上的时间消耗。可以看出随着数据量的增大,JSON相较XML时耗降低优势明显。
图5 MySQL
图6 Oracle
图7 SQL Server
3.2 数据压缩
对JSON与XML在空间上的对比,如表2所示。
表2 JSON与XML数据压缩对比
表2中在500,5000,10000条数据库数据下,JSON文件大小分别为4041,6394,8629,XML文件大小分别为4144,6573,8813。两者差值分别为103,179,184。通过压缩率可以看出JSON相较XML有一定的压缩提升。在占用空间方面,对于500条数据,JSON比XML所需字符数上优势明显,在其余数据量上占用字符数相同。
4 结束语
本文提出了基于JSON数据交换格式的异构系统应用适配器,因JSON格式较XML有许多先天的优势,所以对应用适配器进行改进和优化。实验表明JSON与XML在封装解析、存储、压缩方面都有相应的优势。因为飞机协同设计自身的复杂性,需要通过各方面的努力降低系统能耗与网络带宽的消耗,本文在相关方面做的研究是众多解决方案之一,为后续优化工作的开展提供了帮助。