一种数据构造方法和装置.pdf

上传人:小** 文档编号:4428337 上传时间:2018-10-01 格式:PDF 页数:19 大小:9.21MB
返回 下载 相关 举报
一种数据构造方法和装置.pdf_第1页
第1页 / 共19页
一种数据构造方法和装置.pdf_第2页
第2页 / 共19页
一种数据构造方法和装置.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《一种数据构造方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种数据构造方法和装置.pdf(19页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103970737 A (43)申请公布日 2014.08.06 C N 1 0 3 9 7 0 7 3 7 A (21)申请号 201310027270.7 (22)申请日 2013.01.24 G06F 17/30(2006.01) G06F 9/44(2006.01) (71)申请人腾讯科技(深圳)有限公司 地址 518000 广东省深圳市福田区振兴路赛 格科技园2栋东403室 (72)发明人孔令挥 (74)专利代理机构北京三高永信知识产权代理 有限责任公司 11138 代理人罗振安 (54) 发明名称 一种数据构造方法和装置 (57) 摘要 本发明公开了一种数。

2、据构造方法和装置,属 于网络通信领域。方法包括:对用户上传的Proto 文件进行编译,得到与用户预设的指定消息名称 对应的指定消息结构;生成与指定消息结构对应 的Web页面,将指定消息的数据填充到Web页面中 生成Web页面数据;将Web页面数据转化为Json 格式数据;根据Json格式数据,创建指定消息对 象;对指定消息对象进行序列化,得到指定消息 的ProtoBuf数据文件。本发明解决了Protobuf 数据的构造代价比较大数据准确性差、Protobuf 数据的复用率低以及对使用人员技术要求高的问 题,简化数据构造的过程,降低对使用者技术的要 求,提高数据构造的效率以及数据的复用性和准 确。

3、性。 (51)Int.Cl. 权利要求书2页 说明书9页 附图7页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书9页 附图7页 (10)申请公布号 CN 103970737 A CN 103970737 A 1/2页 2 1.一种数据构造方法,其特征在于,所述方法包括: 对用户上传的Proto文件进行编译,得到与用户预设的指定消息名称对应的指定消息 结构;所述Proto文件为ProtoBuf数据的定义文件; 生成与所述指定消息结构对应的Web页面,将所述指定消息的数据填充到所述Web页 面中生成Web页面数据; 将所述Web页面数据转化为Json格式数据;。

4、 根据所述Json格式数据,创建指定消息对象; 对所述指定消息对象进行序列化,得到所述指定消息的ProtoBuf数据文件。 2.根据权利要求1所述的方法,其特征在于,所述得到所述指定消息的ProtoBuf数据 文件之后,还包括: 对所述Proto文件进行编译得到ProtoBuf数据的消息结构,并根据所述指定消息名称 获取对应的指定消息结构; 对所述指定消息的ProtoBuf数据文件进行反序列化,得到所述指定消息对象; 根据所述指定消息对象,获取对应的所述Json格式数据; 将所述Json格式数据填充到所述Web页面,进行转化得到所述Web页面数据。 3.根据权利要求2所述的方法,其特征在于,所。

5、述将所述Json格式数据填充到所述 Web页面,进行转化得到所述Web页面数据之后,包括: 获取用户在所述Web页面的操作,根据所述操作对所述Web页面数据进行编辑;所述编 辑至少包括修改、删除、增加、隐藏以及展示。 4.根据权利要求1所述的方法,其特征在于,所述对用户上传的Proto文件进行编译之 前,包括: 获取用户上传的Proto文件以及用户预定的所述指定消息名称和所述指定消息的数 据。 5.根据权利要求1所述的方法,其特征在于,所述对用户上传的Proto文件进行编译, 得到与用户预设的指定消息名称对应的指定消息结构,包括: 对用户上传的Proto文件进行编译,得到ProtoBuf数据的。

6、消息结构; 在所述ProtoBuf数据的消息结构中查找用户预设的指定消息名称对应的指定消息结 构。 6.一种数据构造装置,其特征在于,所述装置包括: 第一编译模块,用于对用户上传的Proto文件进行编译,得到与用户预设的指定消息 名称对应的指定消息结构;所述Proto文件为ProtoBuf数据的定义文件; 第一Web生成模块,用于生成与所述指定消息结构对应的Web页面,将所述指定消息的 数据填充到所述Web页面中生成Web页面数据; 第一Json转化模块,用于将所述Web页面数据转化为Json格式数据; 第一对象生成模块,用于根据所述Json格式数据,创建指定消息对象; ProtoBuf数据生。

7、成模块,用于对所述指定消息对象进行序列化,得到所述指定消息的 ProtoBuf数据文件。 7.根据权利要求6所述的装置,其特征在于,所述装置还包括: 第二编译模块,用于所述ProtoBuf数据生成模块得到所述指定消息的ProtoBuf数据 权 利 要 求 书CN 103970737 A 2/2页 3 文件之后,对所述Proto文件进行编译得到ProtoBuf数据的消息结构,并根据所述指定消 息名称获取对应的指定消息结构; 第二对象生成模块,用于对所述指定消息的ProtoBuf数据文件进行反序列化,得到所 述指定消息对象; 第二Json转化模块,用于根据所述指定消息对象,获取对应的所述Json格。

8、式数据; 第二Web生成模块,用于将所述Json格式数据填充到所述Web页面,进行转化得到所 述Web页面数据。 8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 编辑模块,用于所述第二Web生成模块进行转化得到所述Web页面数据之后,获取用户 在所述Web页面的操作,根据所述操作对所述Web页面数据进行编辑;所述编辑至少包括修 改、删除、增加、隐藏以及展示。 9.根据权利要求6所述的装置,其特征在于,所述装置包括: 获取模块,用于所述第一编译模块Proto文件进行编译之前,获取用户上传的Proto文 件以及用户预定的所述指定消息名称和所述指定消息的数据。 10.根据权利要求6所述的。

9、装置,其特征在于,所述第一编译模块,包括: 编译单元,用于对用户上传的Proto文件进行编译,得到ProtoBuf数据的消息结构; 查找单元,用于在所述ProtoBuf数据的消息结构中查找与用户预设的指定消息名称 对应的指定消息结构。 权 利 要 求 书CN 103970737 A 1/9页 4 一种数据构造方法和装置 技术领域 0001 本发明涉及网络通信领域,特别涉及一种数据构造方法和装置。 背景技术 0002 Protobuf(Protocol Buffers),是Google公司开发的一种数据描述语言,能够将 结构化数据序列化,可用于数据存储、通信协议等方面,由于Protobuf出色的。

10、性能和很好 的扩展性而得到广泛应用。但是,Protobuf格式的数据构造却是复杂的过程。 0003 目前,Protobuf数据构造方式一般是首先获取到Protobuf的定义文件proto文 件,然后利用Google提供的Protoc编译器对proto文件编译并生成的特定语言的数据访 问类文件(.Java或.cc或.py),然后在程序中将数据访问类文件包含进去,利用数据访问 类文件中的代码接口进行Protobuf数据的构造以及解析。 0004 在实现本发明的过程中,发明人发现现有技术至少存在以下问题: 0005 首先,随着业务的不断扩展和完善,Protobuf的定义文件通常会被一次有一次的 重写。

11、,并且结构的复杂性和嵌套层次也在不断的增加,这就导致整个数据的构造过程非常 繁琐和缓慢,Protobuf数据的构造代价比较大,数据准确性差; 0006 然后,一次性构造的数据在后续的过程中不能重复使用,或者每次对上次数据修 改后都要重新编译使用,过程重复且Protobuf数据的复用率低; 0007 最后,由于目前Protobuf格式提供C+,Java和Python三种语言接口,使用人员 除了需要了解Protobuf的特点和构造方式,还需要至少熟悉C+,Java,Python中的一种编 程语言,对Protobuf使用人员的技术要求较高。 发明内容 0008 为了解决现有技术的问题,本发明实施例提。

12、供了一种数据构造方法和装置。所述 技术方案如下: 0009 一方面,提供了一种数据构造方法,所述方法包括: 0010 对用户上传的Proto文件进行编译,得到与用户预设的指定消息名称对应的指定 消息结构;所述Proto文件为ProtoBuf数据的定义文件; 0011 生成与所述指定消息结构对应的Web页面,将所述指定消息的数据填充到所述 Web页面中生成Web页面数据; 0012 将所述Web页面数据转化为Json格式数据; 0013 根据所述Json格式数据,创建指定消息对象; 0014 对所述指定消息对象进行序列化,得到所述指定消息的ProtoBuf数据文件。 0015 具体地,所述得到所。

13、述指定消息的ProtoBuf数据文件之后,还包括: 0016 对所述Proto文件进行编译得到ProtoBuf数据的消息结构,并根据所述指定消息 名称获取对应的指定消息结构; 0017 对所述指定消息的ProtoBuf数据文件进行反序列化,得到所述指定消息对象; 说 明 书CN 103970737 A 2/9页 5 0018 根据所述指定消息对象,获取对应的所述Json格式数据; 0019 将所述Json格式数据填充到所述Web页面,进行转化得到所述Web页面数据。 0020 进一步地,所述将所述Json格式数据填充到所述Web页面,进行转化得到所述Web 页面数据之后,包括: 0021 获取。

14、用户在所述Web页面的操作,根据所述操作对所述Web页面数据进行编辑;所 述编辑至少包括修改、删除、增加、隐藏以及展示。 0022 具体地,所述对用户上传的Proto文件进行编译之前,包括: 0023 获取用户上传的Proto文件以及用户预定的所述指定消息名称和所述指定消息 的数据。 0024 具体地,所述对用户上传的Proto文件进行编译,得到用户预设的指定消息名称 对应的指定消息结构,包括: 0025 对用户上传的Proto文件进行编译,得到ProtoBuf数据的消息结构; 0026 在所述ProtoBuf数据的消息结构中查找与用户预设的指定消息名称对应的指定 消息结构。 0027 另一方。

15、面,提供了一种数据构造装置,所述装置包括: 0028 第一编译模块,用于对用户上传的Proto文件进行编译,得到与用户预设的指定 消息名称对应的指定消息结构;所述Proto文件为ProtoBuf数据的定义文件; 0029 第一Web生成模块,用于生成与所述指定消息结构对应的Web页面,将所述指定消 息的数据填充到所述Web页面中生成Web页面数据; 0030 第一Json转化模块,用于将所述Web页面数据转化为Json格式数据; 0031 第一对象生成模块,用于根据所述Json格式数据,创建指定消息对象; 0032 ProtoBuf数据生成模块,用于对所述指定消息对象进行序列化,得到所述指定消。

16、 息的ProtoBuf数据文件。 0033 具体地,所述装置还包括: 0034 第二编译模块,用于所述ProtoBuf数据生成模块得到所述指定消息的ProtoBuf 数据文件之后,对所述Proto文件进行编译得到ProtoBuf数据的消息结构,并根据所述指 定消息名称获取对应的指定消息结构; 0035 第二对象生成模块,用于对所述指定消息的ProtoBuf数据文件进行反序列化,得 到所述指定消息对象; 0036 第二Json转化模块,用于根据所述指定消息对象,获取对应的所述Json格式数 据; 0037 第二Web生成模块,用于将所述Json格式数据填充到所述Web页面,进行转化得 到所述We。

17、b页面数据。 0038 进一步地,所述装置还包括: 0039 编辑模块,用于所述第二Web生成模块进行转化得到所述Web页面数据之后,获取 用户在所述Web页面的操作,根据所述操作对所述Web页面数据进行编辑;所述编辑至少包 括修改、删除、增加、隐藏以及展示。 0040 具体地,所述装置包括: 0041 获取模块,用于所述第一编译模块Proto文件进行编译之前,获取用户上传的 说 明 书CN 103970737 A 3/9页 6 Proto文件以及用户预定的所述指定消息名称和所述指定消息的数据。 0042 具体地,所述第一编译模块,包括: 0043 编译单元,用于对用户上传的Proto文件进行。

18、编译,得到ProtoBuf数据的消息结 构; 0044 查找单元,用于在所述ProtoBuf数据的消息结构中查找与用户预设的指定消息 名称对应的指定消息结构。 0045 本发明实施例提供的技术方案带来的有益效果是: 0046 通过对用户上传的Proto文件进行编译,得到用户预设的指定消息名称对应的指 定消息结构;生成与指定消息结构对应的Web页面并填充指定消息的数据,将Web页面数据 转化为Json格式数据后,创建指定消息对象;对指定消息对象进行序列化,得到指定消息 的ProtoBuf数据文件。解决了Protobuf数据的构造代价比较大数据准确性差、Protobuf 数据的复用率低以及对Pro。

19、tobuf使用人员技术要求高的问题,简化数据构造的过程,降低 对使用者技术的要求,提高数据构造的效率,提高了数据的复用性和准确性。 附图说明 0047 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。 0048 图1是本发明实施例一提供的数据构造方法流程图; 0049 图2是本发明实施例二提供的数据构造方法流程图; 0050 图3是本发明实施例二提供的编译Proto定义文件示意图; 0051 图4是本发。

20、明实施例二提供的生成规则对应图; 0052 图5是本发明实施例二提供的代码模板示意图; 0053 图6是本发明实施例二提供的生成页面示意图; 0054 图7是本发明实施例三提供的数据构造装置第一种结构示意图; 0055 图8是本发明实施例三提供的数据构造装置第二种结构示意图; 0056 图9是本发明实施例三提供的数据构造装置第三种结构示意图; 0057 图10是本发明实施例三提供的数据构造装置第四种结构示意图; 0058 图11是本发明实施例三提供的数据构造装置第五种结构示意图。 具体实施方式 0059 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描。

21、述。 0060 实施例一 0061 参见图1,本发明实施例提供了一种数据构造方法,该方法包括: 0062 101、对用户上传的Proto文件进行编译,得到与用户预设的指定消息名称对应的 指定消息结构;Proto文件为ProtoBuf数据的定义文件; 0063 102、生成与指定消息结构对应的Web页面,将指定消息的数据填充到Web页面中 说 明 书CN 103970737 A 4/9页 7 生成Web页面数据; 0064 103、将Web页面数据转化为Json格式数据; 0065 104、根据Json格式数据,创建指定消息对象; 0066 105、对指定消息对象进行序列化,得到指定消息的Pro。

22、toBuf数据文件。 0067 具体地,得到指定消息的ProtoBuf数据文件之后,还包括: 0068 对Proto文件进行编译得到ProtoBuf数据的消息结构,并根据指定消息名称获取 对应的指定消息结构; 0069 对指定消息的ProtoBuf数据文件进行反序列化,得到指定消息对象; 0070 根据指定消息对象,获取对应的Json格式数据; 0071 将Json格式数据填充到Web页面,进行转化得到Web页面数据。 0072 进一步地,将Json格式数据填充到Web页面,进行转化得到Web页面数据之后,包 括: 0073 获取用户在Web页面的操作,根据操作对生成Web页面数据进行编辑;编。

23、辑至少包 括修改、删除、增加、隐藏以及展示。 0074 具体地,对用户上传的Proto文件进行编译之前,包括: 0075 获取用户上传的Proto文件以及用户预设的指定消息名称和指定消息的数据。 0076 具体地,对用户上传的Proto文件进行编译,得到用户预设的指定消息名称对应 的指定消息结构,包括: 0077 对用户上传的Proto文件进行编译,得到ProtoBuf数据的消息结构; 0078 在ProtoBuf数据的消息结构中查找与用户预设的指定消息名称对应的指定消息 结构。 0079 本发明实施例提供的方法,通过对用户上传的Proto文件进行编译,得到用户预 设的指定消息名称对应的指定消。

24、息结构;生成与指定消息结构对应的Web页面并填充指定 消息的数据,将Web页面数据转化为Json格式数据后,创建指定消息对象;对指定消息对象 进行序列化,得到指定消息的ProtoBuf数据文件。解决了Protobuf数据的构造代价比较 大数据准确性差、Protobuf数据的复用率低以及对Protobuf使用人员技术要求高的问题, 简化数据构造的过程,降低对使用者技术的要求,提高数据构造的效率,提高了数据的复用 性和准确性。 0080 实施例二 0081 参见图2,本发明实施例提供了一种数据构造方法,该方法包括: 0082 201、获取用户上传的Proto文件以及用户预设的指定消息名称和指定消息。

25、的数 据; 0083 具体地,Proto文件为ProtoBuf数据的定义文件;用户还需要预定指定消息名称 和指定消息的数据以便后续使用。 0084 202、对用户上传的Proto文件进行编译,得到与用户预设的指定消息名称对应的 指定消息结构; 0085 具体地,对用户上传的Proto文件进行编译,得到ProtoBuf数据的消息结构;在 ProtoBuf数据的消息结构中查找用户预设的指定消息名称对应的指定消息结构。 0086 其中,对Proto文件的编译工作由Proto文件编译模块来实现,Proto文件编译模 说 明 书CN 103970737 A 5/9页 8 块的输入是一个或多个proto文。

26、件的,经过一系列的编译过程(词法、语法、语义分析),最终 得到编译结果;首先编译得到的结果是一个proto文件的文件描述符FileDescriptor,该 FileDescriptor详细的记录和描述了文件(对象)中各个message、各个结构字段的取值、各 个结构字段之间的关系及结构内部的一些组织形式;而对于数据构造,最终需要得到的是 针对某个消息message的描述符Descriptor,即指定消息结构。 0087 另外,编译模块比较重要的一个过程是处理proto文件之间的依赖关系,该依赖 关系可能是同一proto文件内部各个message之间,也可能是不同proto文件之间message。

27、 的依赖关系,在编译当前message结构的过程中,需要提前查找并编译message的依赖 项。所有proto文件是按照目录的层次结构存储在SourceDiskTree数据结构(功能类似于 Database)中,编译的中间结果是存储在编译器对象Importer的pool结构中。如果编译过 程顺利完成,能够在Importer中得到各个proto文件,各个message以及各个field的信 息。 0088 参见图3,整个编译流程的输入是一个或是多个proto文件,首先产生 FileDescriptor,最终得到针对单个消息message的消息描述符Descriptor,在整个编译 的过程中会产生。

28、一系列的中间结果。 0089 203、生成与指定消息结构对应的Web页面,将指定消息的数据填充到Web页面中 生成Web页面数据; 0090 具体地,Web页面生成主要包括两部分,一是前台页面的生成,二是对应的 JavaScript部分的生成。由于页面的行为由JavaScript进行控制,所以代码生成部分的主 要工作集中在JavaScript代码生成部分。对于页面部分可以采用统一的html代码,因为 html只是内容的载体,变化的是JavaScript所控制部分。对于JavaScript部分,需要根据 编译模块的结果消息描述符Descriptor而去控制html展示成为不同的数据构造页面。 0。

29、091 编译结果和前台展示形式需要制定详细的生成方案和对应关系。考虑到 JavaScript代码的可维护性和扩展性,本发明实施例采用了ExtJS(ajax框架)作为 JavaScript代码生成的一个标准。采用ExtJS框架由于其功能强大,界面美观,是一种轻量 级实现框架,并且将html中的一些控件以对象的形式进行了封装。 0092 1、生成规则决定了编译模块得到的Descriptor对象如何生成对应的Web页面,方 便用户的编辑。对于一个Web页面,首先考虑的是整个页面的布局结构,为了方便后续功能 的扩展,并结合ExtJS框架的基本布局结构,本发明实施例采用border方式的布局,即将整 个。

30、页面分为东、南、西、北、中五部分。所有的生成页面采用统一的布局结构,目前只利用了 布局结构的西部和中部。西部(即页面的左边)主要用来做导航功能,为了方便和Web端接 口进行接入;中部是生成的主要部分,根据message描述符的不同而生成的不同的控件。针 对message描述符的具体信息,不同字段会生成不同的页面部分,两者的对应关系如图4所 示: 0093 对于消息message定义部分,基本单位是一个普通字段,普通字段主要包括修 饰符Modifier、基本数据类型和字段名称三部分;修饰符目前只有三种“optional“、 “required“和“repeated“;基本数据类型与各种编程语言数。

31、据类型一致,主要包括“doubl e“,“float“,“int64“,“uint64“,“int32“,“fixed64“,“fixed32“,“bool“,“string“,“byte s“,“uint32“,“enum“等。 说 明 书CN 103970737 A 6/9页 9 0094 参见图4,对于修饰符为optional或required的普通字段,对应到页面的显示部 分是一个基本单位,包括一个label和input,label主要显示字段名称和具体的数据类型, 而input控件主要用来提供用户的输入。此外对于修饰符为required的字段,label显示 为红色字体,提醒用户该字。

32、段不能为空。对于enum类型和bool类型字段部分,为了数据的 准确性,采用下拉菜单(combobox)的显示样式,用户只需要选择具体的enum值即可。有效 的减少数据出错的可能性。 0095 对于修饰符为repeated的普通字段,显示位置与optional和required普通字段 部分不同,所有的optional和requreid的普通字段部分是显示在一个FieldContainer里 面,每一个repeated字段是一个新的FieldContainer。对于repeated的字段部分需要添 加新增和删除按钮,方便用户添加和删除数据单位。每次添加都是在当前FieldContainer 里。

33、面新增加一个新的Form,然后在Form中添加一个普通的字段。但是普通字段部分没有 label显示部分。所有添加的repeated普遍字段部分共用一个label显示字段名称和数据 类型。 0096 对于修饰符为optional或required的message字段,对应到页面显示部分 也是一个新的FieldContainer,跟optional或reuqired的普通类型字段不在一个 FieldContainer里面。对于optional部分,默认是不展开该message的具体内容的,只有当 用户点击Edit按钮时,才会创建该message对象,并显示具体包含的字段;对于required 部分。

34、,默认对象已经创建,并且不能删除,只能进行隐藏和显示的操作。对于message里面 包含的子字段的处理部分,跟各种字段处理情况相同。 0097 对于修饰符为repeated的message字段部分,对应到页面的显示部分跟repeated 普通字段部分一致,但是每次添加和删除的单位是一个message数据单位,页面显示为一 个Form。Message内部的各个字段显示形式跟各种字段显示方式一致。由外到内是一个不 断嵌套的过程,直到包含所有嵌套字段。 0098 2、考虑到代码生成设计到多种语言混合编程,如何保证代码的可维护性和可扩展 性显得十分重要。对于后台程序的开发采用C/C+语言,而要生成的W。

35、eb代码则包括html, JavaScript,甚至一些CSS样式。如何解决跨语言编程和代码的易读性,是工具实现的一个 难点,最终实现采用了模板引擎技术ctemplate。模板引擎并是模型和视图分离的重要手 段。整个代码生成部分的模板设计如图5所示,各个代码模板的主要功能介绍如下: 0099 pb_extjs.tpl:该模板是整个代码模板的开始部分,也是框架部分,模板包含3个 子模板,frame.tpl、top_form.tpl和sharedJavaScript.tpl,该模板主要用来初始化一些 全局变量。 0100 pb_extjs_frame.tpl:该模板主要功能是控制生成ExtJS页面。

36、的整体结构,包括 构造一些全局容器控件,指定容器的布局结构,以及一些显示样式。在我们的代码生成过程 中主要初始化总的布局结构为border,并创建和初始化结构的west部分和center部分。 0101 pb_extjs_top_form.tpl:由于整个布局的center部分是分层进行构建和初始化 的。该模板创建并初始化center部分的最外层控件,并添加最外层控件的事件处理函数和 部分子控件。此处命名中的top和后面的nested的区别开来,主要是最外层控件的生成工 作。 0102 pb_extjs_sharedJavaScript.tpl:该模板用来添加一些公共的JavaScript函数。

37、 说 明 书CN 103970737 A 7/9页 10 和一些通用的事件处理函数,例如获取整个页面用户输入的数据、提交数据请求到后台、用 户输入数据合法性验证、数据重置和加载后台数据到页面显示等。 0103 pb_extjs_nested_form_optional.tpl:该模板是针对optional message field 而设计,主要负责在页面中生成message对应的FieldContainer控件,包括form的edit、 show和hide事件处理,以及单个form内部字段的生成和相应事件处理等。 0104 pb_extjs_nested_form_re_peated.tpl。

38、:该模板是针对repeated field而设计, 包括message类型和non-message类型,两种类型在生成逻辑方面存在一致性。模板主要 负责在页面中生成message对应的FieldContainer控件,包括form的add和delete事件 处理,以及每个form内部字段的生成和对应的事件处理。 0105 pb_extjs_nested_form_re_quired.tpl:该模板是针对required message field 而设计,主要负责在页面中生成message对应的FieldContainer控件,包括form的show 和hide事件处理,以及单个form内部字。

39、段的生成和对应的事件处理等。 0106 pb_extjs_common_field.tpl:该模板是针对optional/required non-message field而设计,是整个代码模板的基本单位,前面提到的每个模板最终都由common_field. tpl构成。该模板主要负责基本字段的添加和显示,内部包含一些针对optional和 required字段的特殊处理。 0107 204、将Web页面数据转化为Json格式数据; 0108 具体地,JSON数据是用键值对的形式存储的,采用完全独立于语言的文本格式,是 理想的数据交换语言。 0109 205、根据Json格式数据,创建指定消。

40、息对象; 0110 具体地,数据构造模块从Web获得JSON格式字符串,如:“AddressBook“:“A ddressBook_1“:“person_1“:“name“:“lericzhang“,“id“:“6210“,“email“:“leric “,“phone_1“:“number“:“13613665015“,“type“:“0“,“AddressBook_2“: “person_1“:“name“:“lericzhang“,“id“:“6210“,“email“:“lerictenc “,“ph one_1“:“number“:“13613665015“,“type“:“0“。所。

41、有字段都是以key/value形式出 现,key即为field的name,value则是用户输入的具体数值,如果key值对应的field为 message,则value值以“包含。在JSON字符串中,所有的key和value值均是使用“ 进行包括起来,也就是采用字符串的形式,后续数据构造的过程中根据字段的定义需要做 数据类型的转化。 0111 206、对指定消息对象进行序列化,得到指定消息的ProtoBuf数据文件。 0112 具体地,采用预设的编码方式对指定消息对象进行序列化,得到指定消息的 ProtoBuf数据文件。 0113 步骤201-206,完成了数据的构造过程,从用户上传一个或多个。

42、proto文件开始, 到指定消息的ProtoBuf数据文件的整个过程,最终得到的ProtoBuf数据文件内容是经过 编码的数据,对用户来说是不可识别的。 0114 参见图6,下面对指定消息的ProtoBuf数据文件进行解析,具体过程如下 0115 207、对Proto文件进行编译得到ProtoBuf数据的消息结构,并根据指定消息名称 获取对应的指定消息结构; 0116 具体步骤参见步骤202,不再赘述。 说 明 书CN 103970737 A 10 8/9页 11 0117 208、对指定消息的ProtoBuf数据文件进行反序列化,得到指定消息对象; 0118 具体地,采取与步骤206序列化相。

43、反的处理,采用预设的编码方式对指定消息的 ProtoBuf数据文件进行反序列化,得到指定消息对象。 0119 209、根据指定消息对象,获取对应的Json格式数据; 0120 具体地,解析模块的输入是已存在的Protobuf数据文件,在进行数据解析之前, 首先需要知是数据文件的格式,主要分为是普通文件格式和Record I/O文件格式。两种文 件的读取接口不同。其次是该数据文件对应的proto文件和message名称,只有知道这个 信息才能够编译proto文件获得message的具体描述符,进而可以解析文件内容获得各个 字段对应的取值。数据解析模块的主要处理分大体分为2个过程:首先从数据文件中。

44、读取 数据并序列化为message对象,其次遍历message对象获得对应的JSON格式字符串。 0121 210、将Json格式数据填充到Web页面,进行转化得到Web页面数据。 0122 具体地,将Json格式数据填充到Web页面,进行转化得到Web页面数据之后,包 括: 0123 获取用户在Web页面的操作,根据操作对生成Web页面数据进行编辑;编辑至少包 括修改、删除、增加、隐藏以及展示。 0124 步骤207-210,完成了ProtoBuf数据的解析过程。 0125 本发明实施例提供的方法,通过对用户上传的Proto文件进行编译,得到用户预 设的指定消息名称对应的指定消息结构;生成与。

45、指定消息结构对应的Web页面并填充指定 消息的数据,将Web页面数据转化为Json格式数据后,创建指定消息对象;对指定消息对象 进行序列化,得到指定消息的ProtoBuf数据文件。解决了Protobuf数据的构造代价比较 大数据准确性差、Protobuf数据的复用率低以及对Protobuf使用人员技术要求高的问题, 简化数据构造的过程,降低对使用者技术的要求,提高数据构造的效率,提高了数据的复用 性和准确性。 0126 实施例三 0127 参见图7,本发明实施例提供了一种数据构造装置,该装置包括: 0128 第一编译模块701,用于对用户上传的Proto文件进行编译,得到与用户预设的指 定消息。

46、名称对应的指定消息结构;Proto文件为ProtoBuf数据的定义文件; 0129 第一Web生成模块702,用于生成与指定消息结构对应的Web页面,将指定消息的 数据填充到Web页面中生成Web页面数据; 0130 第一Json转化模块703,用于将Web页面数据转化为Json格式数据; 0131 第一对象生成模块704,用于根据Json格式数据,创建指定消息对象; 0132 ProtoBuf数据生成模块705,用于对指定消息对象进行序列化,得到指定消息的 ProtoBuf数据文件。 0133 具体地,参见图8,该装置还包括: 0134 第二编译模块706,用于ProtoBuf数据生成模块得。

47、到指定消息的ProtoBuf数据文 件之后,对Proto文件进行编译得到ProtoBuf数据的消息结构,并根据指定消息名称获取 对应的指定消息结构; 0135 第二对象生成模块707,用于对指定消息的ProtoBuf数据文件进行反序列化,得 到指定消息对象; 说 明 书CN 103970737 A 11 9/9页 12 0136 第二Json转化模块708,用于根据指定消息对象,获取对应的Json格式数据; 0137 第二Web生成模块709,用于将Json格式数据填充到Web页面,进行转化得到Web 页面数据。 0138 进一步地,参见图9,该装置还包括: 0139 编辑模块710,用于第二。

48、Web生成模块进行转化得到Web页面数据之后,获取用户 在Web页面的操作,根据操作对生成Web页面数据进行编辑;编辑至少包括修改、删除、增 加、隐藏以及展示。 0140 具体地,参见图10,该装置包括: 0141 获取模块711,用于第一编译模块Proto文件进行编译之前,获取用户上传的 Proto文件以及用户预设的指定消息名称和指定消息的数据。 0142 具体地,参见图11,第一编译模块701,包括: 0143 编译单元701a,用于对用户上传的Proto文件进行编译,得到ProtoBuf数据的消 息结构; 0144 查找单元701b,用于在ProtoBuf数据的消息结构中查找与用户预设的指定消息 名称对应的指定消息结构。 0145 本发明实施例提供的装置,通过对用户上传的Proto文件进行编译,得到用户预 设的指定消息名称对应的指定消息结构;生成与指定消息结构对应的Web页面并填充指定 消息的数据,将Web页面数据转化为Json格式数据后,创建指定消息对象;对指定消息对象 进行序列化,得到指定消息的ProtoBuf数据文件。解决了Protobuf数据的构造代价比较 大数据准确性差、Protobuf数据的复用率低以及对Protobuf使用人员技术要求高的问题, 简化数据构造的过程,降低对使用者技术的要求,提高数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1