[發明專利]一種封裝與解析二進制協議數據的方法和裝置在審
| 申請號: | 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.szxzyx.cn/pat/books/201210172699.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種A型低壓漏電保護器專用集成電路
- 下一篇:地埋電纜





