[发明专利]一种封装与解析二进制协议数据的方法和装置在审
申请号: | 201210172699.0 | 申请日: | 2012-05-25 |
公开(公告)号: | CN103428192A | 公开(公告)日: | 2013-12-04 |
发明(设计)人: | 杨建禹 | 申请(专利权)人: | 腾讯科技(北京)有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 张颖玲;程立民 |
地址: | 100089 北京市海淀区海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 封装 解析 二进制 协议 数据 方法 装置 | ||
技术领域
本发明涉及数据封装和解析技术,特别是指一种封装与解析二进制协议数据的方法和装置。
背景技术
在网络分布式集群中,通常充斥着各式各样的自定义二进制协议。为了在不同的语言,不同的系统平台上使用这些二进制协议,开发人员不得不针对各种语言及系统平台做出不同的实现。如图1所示,按照传统的实现方式,为了在不同的语言,不同的系统平台上使用多种二进制协议,需要为每一种二进制协议做出单独的实现,如图所示:将每种二进制协议(图中所示为接口)的数据和数据的含义表述信息放到一个信息体中,形成结构化数据,并分别进行C++实现、Java实现、PHP实现和Python实现等,之后,将C++版本的接口、Java版本的接口、PHP版本的接口和Python版本的接口等分别按照该接口中定义的封装方式(定义协议的输入与输出方法中包括了对封装方式的定义)进行封装;在这种传统的实现方式中,不同的接口中定义的封装方式不同、如N个接口中的每个接口定义的封装方式都可能不同。
由此可见,由于每种接口定义的封装方式不同,导致需要对每种接口、以及每种接口的各个版本单独实现并单独维护,因为网络分布式集群中充斥着各式各样的自定义接口,这样会带来超高的实现与维护成本。
为了减少成本,部分系统中会尝试使用统一的通用协议来实现。如图2所示,所有接口都使用统一的通用协议来封装各自的C++版本、Java版本、PHP版本和Python版本等。统一的通用协议,例如json、protobuf、thrift等。
如果采用图1所示的传统的方式来开发一个大型的系统,开发者将面临难 以估量的开发与维护成本。采用图2所示的统一的通用协议是一个降低实现与维护成本的好方法,但是也会存在如下的问题:
1、统一的通用协议需要将数据含义的表述信息存入结构化数据中,而这部分信息本来只需由客户端与服务端自行约定、不需要放到结构化数据中,统一的通用协议这样的做法将使得协议的体积变得庞大;
2、为了达到通用的目的,统一的通用协议中需要制订一些规范与约定,这样做会使得协议丧失一定的灵活性;
3、在大型分布式系统中,通常已存在很多以图1所示的传统方式实现的稳定服务,全部统一成通用协议需要很大的改造成本。
发明内容
有鉴于此,本发明的主要目的在于提供一种封装与解析二进制协议数据的方法和装置,解决传统实现方式以及统一的通用协议实现方式导致的二进制协议实现与维护成本大、协议体积庞大、协议灵活性低等问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种封装与解析二进制协议数据的方法,根据二进制协议数据的结构化数据设置对应的封装配置和解析配置,该方法还包括:
服务端预先保存封装配置,客户端预先保存解析配置;
服务端根据所述封装配置对二进制协议数据的结构化数据进行封装,得到协议串;
客户端根据对应的所述解析配置对所述协议串进行解析,得到所述结构化数据。
所述结构化数据包括一个或多个数据元素;所述数据元素包括:类型、属性名和值。
所述数据元素还包括长度。
所述服务端根据所述封装配置对二进制协议数据的结构化数据进行封装,包括:
服务端将结构化数据的各数据元素的值按照各数据元素在结构化数据中的排列顺序依次封装到协议串中;
各数据元素的值在协议串中占用的字节数根据对应的类型或长度确定。
客户端根据对应的所述解析配置对所述协议串进行解析,包括:
按照所述解析配置中各信息元的排列顺序、以及各信息元的内容对协议串进行解析,依次得到各信息元对应的数据元素的值。
数据元素为基本类型数据时,对应的信息元的内容包括:类型和属性名;
所述基本类型数据的至少包括以下几种:字符型、字符串、整型、布尔型(bool)。
数据元素为基本类型数据时,对应的信息元的内容还包括:长度。
数据元素为数组时,对应的信息元的内容包括:类型、属性名、成员的类型和长度;
所述数组包含一个或多个成员,所有成员为类型相同的基本类型数据;
长度指示成员的个数,通过解析得到的前一个数据元素的值指定,且前一个数据元素为基本类型数据。。
数据元素为对象时,对应的信息元的内容包括:类型、属性名、子对象的解析配置和长度;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(北京)有限公司,未经腾讯科技(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210172699.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种A型低压漏电保护器专用集成电路
- 下一篇:地埋电缆