CN102902707B - 不同版本二进制数据兼容的方法及数据版本转换系统 - Google Patents
不同版本二进制数据兼容的方法及数据版本转换系统 Download PDFInfo
- Publication number
- CN102902707B CN102902707B CN201210270163.2A CN201210270163A CN102902707B CN 102902707 B CN102902707 B CN 102902707B CN 201210270163 A CN201210270163 A CN 201210270163A CN 102902707 B CN102902707 B CN 102902707B
- Authority
- CN
- China
- Prior art keywords
- description list
- binary data
- version
- edition
- structure description
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种不同版本二进制数据兼容的方法,该方法包括:根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表,所述第一版本结构体描述表和第二版本结构体描述表都至少包括每个成员的标识和二进制数据长度;对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;根据所述转换矩阵,将按照第一版本结构体存储的二进制数据,转换为按照第二版本结构体存储的二进制数据。本申请还公开了一种数据版本转换系统。采用本发明能够使不同版本数据兼容。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种不同版本二进制数据兼容的方法及数据版本转换系统。
背景技术
通信设备在实际使用中,经常需要涉及版本升级,而版本升级后,可能会引起配置数据和板间、设备之间通信数据格式的变化。如果通信数据和配置数据采用文本方式编码,那么版本的升级带来的数据格式变化是能够自动兼容的,但是采用文本方式的配置存在一个问题是配置信息非常大时,需要把这些配置解析成程序理解的二进制方式一定的时间,往往会导致重启时间比较长,因此该方法存在缺陷。
后续我们就采用了更为先进的存储配置方式,直接存在二进制配置,把相应的数据使用结构体方式存储到文件中,重启时,还是按照原来的结构体进行读取。但是采用二进制方式的配置数据和通信数据,那么就不存在编解码了,处理比较简单。重启时,直接读取数据存储到结构体中即可恢复配置,而主控板只需要把该数据结构体同步给备板、接口板就可以支持板间数据通信。但是,采用二进制数据最大的问题时,当版本升级时,老配置数据同新版本的程序的数据格式兼容问题,在版本升级中,老版本设备或者板卡同新版本的设备或者板卡通信数据格式兼容问题,因此,如果在架构体中新增加数据或者删除数据、或者修改某个数据的长度,都会导致新老版本数据的不兼容。因此,如何克服上述问题成为业内关注的问题。
发明内容
本发明实施例提供了一种不同版本二进制数据兼容的方法,能够使不同版本数据兼容。
一种不同版本二进制数据兼容的方法,该方法包括:
根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表,所述第一版本结构体描述表和第二版本结构体描述表都至少包括每个成员的标识和二进制数据长度;
对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;
根据所述转换矩阵,将按照第一版本结构体存储的二进制数据,转换为按照第二版本结构体存储的二进制数据。
本发明实施例提供了一种数据版本转换系统,能够使不同版本数据兼容。
一种数据版本转换系统,所述系统包括:
结构体描述表生成模块,用于根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表;
分析转换模块,用于对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;还用于输入第一版本结构体二进制数据后得到第二版本结构体二进制数据;
第一版本结构体二进制数据存储模块,用于存储第一版本结构体二进制数据。
从上述方案可以看出,本发明实施例分别将两个版本的结构体定义结构体描述表,并对这两个版本的结构体描述表进行分析处理得到转换矩阵,根据转换矩阵,将按照一种版本结构体存储的二进制数据,转换为按照另一种版本结构体存储的二进制数据。从而实现了不同版本通信数据和配置数据的兼容。
附图说明
图1为本发明提供的不同版本二进制数据兼容的方法流程示意图。
图2为本发明具体实施例中应用于上述方法的数据版本转换系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
图1为本发明提供的不同版本二进制数据兼容的方法流程示意图。如图1所示,该方法包括:
步骤11、根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表,所述第一版本结构体描述表和第二版本结构体描述表都至少包括每个成员的名称和二进制数据长度;
步骤12、对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;
步骤13、根据所述转换矩阵,将按照第一版本结构体存储的二进制数据,转换为按照第二版本结构体存储的二进制数据。
下面以一个实际例子进行说明。
隧道接口的典型数据在版本1.01中的结构体如表1所示:
表1
针对1.01版本的结构体定义相应的结构体描述表,称为第一版本结构体描述表。
首先介绍一下结构体描述表的定义:按照数据结构体的顺序,给每个成员元素定义一个名称标识和该元素的存储空间长度。当然,还可以根据需要定义该元素的其它附加属性,例如数据类型等。对于结构体描述表的定义如表2所示:
表2
因此,根据表2可以得到第一版本结构体描述表,如表3所示:
表3
当版本升级到1.02时,结构体如表4所示:
表4
从表4和表1的比较可以看出,1.02版本的结构体有4个变化:1、增加了新的变量uiMTU;2、把szSrcIFName的长度从8变成了12;3、删除了usPeriod;4、把usRetryCount变成了uiRetryCount。
因此,针对1.02版本的结构体定义相应的结构体描述表,称为第二版本结构体描述表。结合表2可以得到第二版本结构体描述表,如表5所示:
表5
在版本变更后,针对1.01版本的结构体描述表和1.02版本的结构体描述表进行分析处理,即针对表3和表5,得到一个两者之间的转换矩阵,对于转换矩阵的定义如表6所示,定义第二版本结构体描述表中每个成员在第一版本结构体中的偏移位置(源成员偏移)、在第二版本结构体中的偏移位置(目的成员偏移)和需要复制的该成员的二进制数据长度(拷贝长度)。
表6
根据表6对转换矩阵的定义,对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵的方法为:
根据第二版本结构体描述表中成员的个数确定转换矩阵的行数,行元素包括该行对应的成员在第一版本结构体中的偏移位置、在第二版本结构体中的偏移位置和需要复制的该成员的二进制数据长度;
对于其中一个成员对应的行元素,将第二版本结构体描述表中该成员之前的成员的二进制数据长度累加,作为该成员在第二版本结构体中的偏移位置;
确定该成员是否存在于第一版本结构体描述表中,如果是,则将第一版本结构体描述表中该成员之前的所有成员的二进制数据长度累加,作为该成员在第一版本结构体中的偏移位置;如果否,该成员在第一版本结构体描述表中的二进制数据长度为零,在第一版本结构体中的偏移位置为零;
比较该成员在第一版本结构体描述表中的长度和在第二版本结构体描述表中的长度,取两者中较小值作为需要复制的该成员的二进制数据长度。
因此,本发明实施例得到的转换矩阵如表7所示:
表7
得到如表7所示的转换矩阵是本发明的关键,这样就可以根据上述转换矩阵,将按照第一版本结构体存储的二进制数据,转换为按照第二版本结构体存储的二进制数据。
当两个通信实体之间二进制通信数据版本不一致时,例如通信实体1采用按照第一版本结构体存储的二进制通信数据,根据第一版本结构体定义第一版本结构体描述表;通信实体2根据第二版本结构体定义第二版本结构体描述表。通信实体1先接收通信实体2的第二版本结构体描述表,将自身的第一版本结构体描述表和第二版本结构体描述表进行分析处理,得到转换矩阵;然后根据所述转换矩阵,将按照第一版本结构体存储的二进制数据,转换为按照第二版本结构体存储的二进制数据。在通信实体1向通信实体2发送通信数据时,发送按照第二版本结构体存储的二进制数据。这样,通信实体2就可以兼容通信实体1的通信数据了。
当通信设备进行升级启动时,通信设备首先读取前版本结构体描述表,和升级后版本结构体描述表进行分析处理,得到一个二进制配置数据转换矩阵;然后根据所述转换矩阵,将按照前版本结构体存储的二进制配置数据,转换为按照升级后版本结构体存储的二进制配置数据。这样通信设备就可以兼容老版本的配置数据了。后续在恢复这种格式的二进制配置数据时,先使用所述转换矩阵进行转换,就可以得到按照老版本结构体存储的二进制配置数据了。
基于同样的发明构思,本发明还提出一种数据版本转换系统,参见图2,图2为本发明具体实施例中应用于上述方法的数据版本转换系统的结构示意图。该数据版本转换系统包括:结构体描述表生成模块201、分析转换模块202和第一版本结构体二进制数据存储模块203;
结构体描述表生成模块201,用于根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表;
分析转换模块202,用于对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;还用于输入第一版本结构体二进制数据后得到第二版本结构体二进制数据;
第一版本结构体二进制数据存储模块203,用于存储第一版本结构体二进制数据。
根据本发明,无论通信设备需要进行升降级处理,还是两个通信实体之间通信数据版本不一致,都可以将两个版本的结构体描述表进行分析处理,得到转换矩阵,后续这种类型的具体数据都可以采用这个转换矩阵快速处理数据。因此,后续在处理数据时,效率非常高。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种不同版本二进制数据兼容的方法,该方法包括:
根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表,所述第一版本结构体描述表和第二版本结构体描述表都至少包括每个成员的标识和二进制数据长度;
对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;
根据所述转换矩阵,将按照第一版本结构体存储的二进制数据,转换为按照第二版本结构体存储的二进制数据;
其中,所述对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵的方法包括:
根据第二版本结构体描述表中成员的个数确定转换矩阵的行数,行元素包括该行对应的成员在第一版本结构体中的偏移位置、在第二版本结构体中的偏移位置和需要复制的该成员的二进制数据长度。
2.如权利要求1所述的方法,其特征在于,对于其中一个成员对应的行元素,将第二版本结构体描述表中该成员之前的成员的二进制数据长度累加,作为该成员在第二版本结构体中的偏移位置。
3.如权利要求2所述的方法,其特征在于,确定该成员是否存在于第一版本结构体描述表中,如果是,则将第一版本结构体描述表中该成员之前的所有成员的二进制数据长度累加,作为该成员在第一版本结构体中的偏移位置;如果否,该成员在第一版本结构体描述表中的二进制数据长度为零,在第一版本结构体中的偏移位置为零。
4.如权利要求3所述的方法,其特征在于,比较该成员在第一版本结构体描述表中的长度和在第二版本结构体描述表中的长度,取两者中较小值作为需要复制的该成员的二进制数据长度。
5.如权利要求1所述的方法,其特征在于,所述第一版本结构体描述表和第二版本结构体描述表还包括每个成员的数据类型。
6.一种数据版本转换系统,其特征在于,所述系统包括:
结构体描述表生成模块,用于根据不同版本的二进制数据结构体定义第一版本结构体描述表和第二版本结构体描述表;
分析转换模块,用于对第一版本结构体描述表和第二版本结构体描述表进行分析,得到两者之间的转换矩阵;还用于输入第一版本结构体二进制数据后得到第二版本结构体二进制数据;
第一版本结构体二进制数据存储模块,用于存储第一版本结构体二进制数据;
其中,所述转换矩阵的行数根据第二版本结构体描述表中成员的个数确定,行元素包括该行对应的成员在第一版本结构体中的偏移位置、在第二版本结构体中的偏移位置和需要复制的该成员的二进制数据长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210270163.2A CN102902707B (zh) | 2012-08-01 | 2012-08-01 | 不同版本二进制数据兼容的方法及数据版本转换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210270163.2A CN102902707B (zh) | 2012-08-01 | 2012-08-01 | 不同版本二进制数据兼容的方法及数据版本转换系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102902707A CN102902707A (zh) | 2013-01-30 |
CN102902707B true CN102902707B (zh) | 2016-03-30 |
Family
ID=47574940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210270163.2A Active CN102902707B (zh) | 2012-08-01 | 2012-08-01 | 不同版本二进制数据兼容的方法及数据版本转换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102902707B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977223B (zh) * | 2017-11-20 | 2020-12-04 | 杭州迪普科技股份有限公司 | 一种配置兼容性检查方法及装置 |
CN112328278A (zh) * | 2020-10-26 | 2021-02-05 | 浙江大华技术股份有限公司 | 对网络中的设备进行安装升级的方法、平台及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881891A (zh) * | 2005-06-17 | 2006-12-20 | 华为技术有限公司 | 通信设备配置数据的存储方法 |
CN101008894A (zh) * | 2007-01-26 | 2007-08-01 | 华为技术有限公司 | 实现系统新旧版本兼容的方法及装置 |
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
CN101594355A (zh) * | 2009-06-17 | 2009-12-02 | 华为技术有限公司 | 一种实现软件跨版本交互的方法及装置 |
CN102426518A (zh) * | 2011-04-20 | 2012-04-25 | 重庆新世杰电气股份有限公司 | 一种实现软件版本兼容的方法 |
-
2012
- 2012-08-01 CN CN201210270163.2A patent/CN102902707B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881891A (zh) * | 2005-06-17 | 2006-12-20 | 华为技术有限公司 | 通信设备配置数据的存储方法 |
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
CN101008894A (zh) * | 2007-01-26 | 2007-08-01 | 华为技术有限公司 | 实现系统新旧版本兼容的方法及装置 |
CN101594355A (zh) * | 2009-06-17 | 2009-12-02 | 华为技术有限公司 | 一种实现软件跨版本交互的方法及装置 |
CN102426518A (zh) * | 2011-04-20 | 2012-04-25 | 重庆新世杰电气股份有限公司 | 一种实现软件版本兼容的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102902707A (zh) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10430164B2 (en) | Automation of canonical model usage in application development processes | |
CN103678494A (zh) | 客户端同步服务端数据的方法及装置 | |
CN107977396B (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN102722372A (zh) | 一种通过分类配置自动生成代码的方法及系统 | |
CN102087594B (zh) | 扩展点和插件的管理方法和装置 | |
CN100501744C (zh) | 一种文档同步方法及系统 | |
US10353874B2 (en) | Method and apparatus for associating information | |
CN106649457A (zh) | 基于对象关系映射技术的数据处理框架 | |
CN104216961A (zh) | 一种数据处理方法和装置 | |
CN109445794B (zh) | 一种页面构造方法及装置 | |
CN107766130A (zh) | 虚拟机向容器迁移的方法和装置 | |
CN105278961A (zh) | 生成数据库表结构文档的方法及系统 | |
CN104156198A (zh) | 一种自动生成软件集成版本更新说明方法及装置 | |
CN101377737B (zh) | 应用系统资源管理装置 | |
CN102902707B (zh) | 不同版本二进制数据兼容的方法及数据版本转换系统 | |
CN105677805A (zh) | 一种利用protobuf的数据存储、读取方法及装置 | |
CN105718468A (zh) | 一种数据仓库ods层的建立方法和装置 | |
CN112783482B (zh) | 一种可视化表单生成方法、装置、设备及存储介质 | |
CN105373388A (zh) | 自动上传patch修改的代码管理方法 | |
CN105260266A (zh) | 一种快照卷写方法及依赖快照系统 | |
CN102737082A (zh) | 一种动态更新文稿数据索引的方法和系统 | |
CN102375889A (zh) | 一种通过网页构建数据库构建网页的方法 | |
CN104598277A (zh) | 一种移动端应用构建方法、移动端及系统 | |
CN103310304A (zh) | 流程模型的管理方法和装置 | |
CN108228174A (zh) | 加快软件开发中编码效率的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |