一種跨平臺通訊協(xié)議代碼的轉(zhuǎn)換方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種即時通訊技術(shù)領(lǐng)域的方法和系統(tǒng),具體講設(shè)及一種跨平臺通訊協(xié) 議代碼的轉(zhuǎn)換方法及其系統(tǒng)。
【背景技術(shù)】
[0002] 通訊協(xié)議為兩個節(jié)點間交換信息的載體,目前序列化協(xié)議有非常多的選擇,但需 要各個語言或各平臺各自實現(xiàn)編解碼和回調(diào)分發(fā),每次更新協(xié)議都需要各個語言或者平臺 修改編解碼和解析的代碼,費(fèi)時費(fèi)力,且對人員的穩(wěn)定要求較高,二次開發(fā)成本較高,流程 復(fù)雜。
[0003] 例如:protobuf協(xié)議使用java語言實現(xiàn)發(fā)送的方法包括W下步驟:
[0004] 1、生成protobuf協(xié)議中定義的消息對象;2、將消息對象序列化成二進(jìn)制數(shù)據(jù);3、 將數(shù)據(jù)實體通過約定好的編碼規(guī)范封包;4、通過SOket發(fā)送數(shù)據(jù)包。 陽0化]protobuf協(xié)議使用java語言實現(xiàn)的方法包括W下步驟:
[0006] 1、接收到數(shù)據(jù)開始組包;2、組包完成后開始解碼;3、根據(jù)解碼后的信令反序列化 數(shù)據(jù)實體;4、返回protobuf消息對象。
[0007] 結(jié)合上述例子可W發(fā)現(xiàn),現(xiàn)有技術(shù)中通訊協(xié)議生成的方法存在W下問題弊端:
[0008] 1、需要編寫針對特定協(xié)議的序列化和反序列化代碼;
[0009] 2、更新協(xié)議后需要修改編解碼模塊; 陽010] 3、二次開發(fā)成本較高;
[0011] 4、代碼維護(hù)成本較高; 陽〇1引 5、容錯率低;
[0013] 6、服務(wù)端需要和多個平臺或者語言調(diào)試;
[0014] 7、無法自動化生成數(shù)據(jù)的過程。
[0015] 為解決上述問題,本發(fā)明提供一種基于跨語言定長數(shù)據(jù)的通訊協(xié)議自動轉(zhuǎn)換方法 及系統(tǒng)。
【發(fā)明內(nèi)容】
[0016] 為克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于跨語言定長數(shù)據(jù)的通訊協(xié)議轉(zhuǎn) 換生成方法及系統(tǒng)。
[0017] 實現(xiàn)上述目的所采用的解決方案為:
[0018] 一種跨平臺通訊協(xié)議代碼的轉(zhuǎn)換方法,其改進(jìn)之處在于:所述方法包括W下步 驟:
[0019] 定義基于二進(jìn)制數(shù)據(jù)的通用通訊協(xié)議,所述通用通訊協(xié)議包括協(xié)議頭和數(shù)據(jù)實 體,所述協(xié)議頭用于保存所述數(shù)據(jù)實體的長度和所述通訊協(xié)議的協(xié)議信令;
[0020] 根據(jù)所述通用通訊協(xié)議,編寫包含所述通用通訊協(xié)議內(nèi)容的描述文件;
[0021] 確定所述通訊協(xié)議需轉(zhuǎn)換成的語言類型,對所述描述文件的內(nèi)容進(jìn)行格式轉(zhuǎn)換;
[0022] 生成并調(diào)用通訊協(xié)議接口文件。
[0023] 優(yōu)選地,所述協(xié)議頭為8bit,前4bit保存數(shù)據(jù)實體的長度,后4bit保存通訊協(xié)議 信令;
[0024] 所述數(shù)據(jù)實體為25化it,分為4bit、4bit、4bit和24化it,分別用于保存發(fā)送數(shù)據(jù) 的W、接收數(shù)據(jù)的W、消息類型和消息內(nèi)容。
[00巧]優(yōu)選地,運(yùn)用XML格式定義所述描述文件;
[00%] 所述描述文件,包括數(shù)據(jù)類型、數(shù)據(jù)對象、請求接口、回調(diào)接口;
[0027] 所述數(shù)據(jù)對象為所述描述文件的數(shù)據(jù)的組合;
[0028] 所述數(shù)據(jù)接口,用于請求服務(wù)器的方法名和需傳入的參數(shù);
[0029] 所述回調(diào)接口,用于為服務(wù)器返回獲得的數(shù)據(jù)。
[0030] 優(yōu)選地,所述步驟:編寫包含所述通訊協(xié)議內(nèi)容的描述文件;包括:
[0031] 根據(jù)待轉(zhuǎn)換通訊協(xié)議,依次進(jìn)行W下步驟完成所述XML描述文件的定義:
[0032] 確定描述文件的整體結(jié)構(gòu)的節(jié)點,在所述跟節(jié)點下定義所述通訊協(xié)議的數(shù)據(jù)類 型;
[0033] 在所述根節(jié)點下定義所述通訊協(xié)議的數(shù)據(jù)數(shù)組; 陽034] 在所述根節(jié)點下定義所述通訊協(xié)議的結(jié)構(gòu)體;
[0035] 在所述根節(jié)點下定義所述通訊協(xié)議的所有的請求方法集合;
[0036] 在所述根節(jié)點下定義所述通訊協(xié)議的所有的回調(diào)方法集合;
[0037] 在請求接點或返回節(jié)點下使用method定義請求方法或回調(diào)方法; 陽038] 在method節(jié)點下定義請求或者回調(diào)方法的參數(shù)。
[0039] 優(yōu)選地,所述步驟:確定所述通訊協(xié)議需轉(zhuǎn)換成的語言類型,對所述描述文件的內(nèi) 容進(jìn)行格式轉(zhuǎn)換;包括:
[0040] 從所述描述語言中獲取數(shù)據(jù)類型,并確定所述通用通訊協(xié)議需要轉(zhuǎn)換成的語言類 型;
[0041] 根據(jù)所述描述文件中的數(shù)據(jù)類型及待轉(zhuǎn)換成的數(shù)據(jù)類型,調(diào)用特征數(shù)據(jù)轉(zhuǎn)換方 法,實現(xiàn)所述特征數(shù)據(jù)的轉(zhuǎn)換。
[0042] 優(yōu)選地,所述步驟:生成并調(diào)用通訊協(xié)議接口文件;包括:
[0043] 轉(zhuǎn)換后整合代碼文件生成通訊協(xié)議接口文件,包括請求函數(shù)、回調(diào)接口和工具函 數(shù);
[0044] 將所述代碼文件發(fā)送給語言平臺;
[0045] 所述語言平臺調(diào)用所述通訊協(xié)議接口文件。
[0046] 一種跨平臺通訊協(xié)議代碼的轉(zhuǎn)換系統(tǒng),其改進(jìn)之處在于:所述系統(tǒng)包括描述文件 生成模塊、協(xié)議轉(zhuǎn)換模塊和接口生成模塊;
[0047] 所述描述文件生成模塊,用于讀取通用通訊協(xié)議,根據(jù)所述通用通訊協(xié)議編寫包 含所述通用通訊協(xié)議內(nèi)容的描述文件;
[0048] 所述協(xié)議轉(zhuǎn)換模塊,用于從所述描述語言中獲取數(shù)據(jù)類型,并確定所述通用通訊 協(xié)議需要轉(zhuǎn)換成的語言類型;根據(jù)所述描述文件中的數(shù)據(jù)類型及待轉(zhuǎn)換成的數(shù)據(jù)類型,調(diào) 用特征數(shù)據(jù)轉(zhuǎn)換方法,實現(xiàn)所述特征數(shù)據(jù)的轉(zhuǎn)換;
[0049] 所述接口生成模塊,用于獲取轉(zhuǎn)換后的通訊協(xié)議,生成通訊協(xié)議接口文件,供所述 語言平臺調(diào)用。
[0050] 優(yōu)選地,所述通用通訊協(xié)議包括協(xié)議頭和數(shù)據(jù)實體,所述協(xié)議頭用于保存所述數(shù) 據(jù)實體的長度和所述通訊協(xié)議的協(xié)議信令;
[0051] 所述協(xié)議頭為8bit,前4bit保存數(shù)據(jù)實體的長度,后4bit保存通訊協(xié)議信令;
[0052] 所述數(shù)據(jù)實體為25化it,分為4bit、4bit、4bit和24化it,分別用于保存發(fā)送數(shù)據(jù) 的W、接收數(shù)據(jù)的W、消息類型和消息內(nèi)容。
[0053] 優(yōu)選地,運(yùn)用XML格式定義所述描述文件;
[0054] 所述描述文件,包括數(shù)據(jù)類型、數(shù)據(jù)對象、請求接口、回調(diào)接口;
[0055] 所述數(shù)據(jù)對象為所述描述文件的數(shù)據(jù)的組合;
[0056] 所述數(shù)據(jù)接口,用于請求服務(wù)器的方法名和需傳入的參數(shù);
[0057] 所述回調(diào)接口,用于為服務(wù)器返回獲得的數(shù)據(jù)。
[0058] 優(yōu)選地,所述描述文件生成模塊,包括完成W下各步的子模塊:
[0059] 確定描述文件的整體結(jié)構(gòu)的節(jié)點,在所述跟節(jié)點下定義所述通訊協(xié)議的數(shù)據(jù)類 型;
[0060] 在所述根節(jié)點下定義所述通訊協(xié)議的數(shù)據(jù)數(shù)組;
[0061] 在所述根節(jié)點下定義所述通訊協(xié)議的結(jié)構(gòu)體;
[0062] 在所述根節(jié)點下定義所述通訊協(xié)議的所有的請求方法集合;
[0063] 在所述根節(jié)點下定義所述通訊協(xié)議的所有的回調(diào)方法集合;
[0064] 在請求接點或返回節(jié)點下使用method定義請求方法或回調(diào)方法; 陽0化]在method節(jié)點下定義請求或者回調(diào)方法的參數(shù)。
[0066] 與最接近的現(xiàn)有技術(shù)相比,本發(fā)明具有W下有益效果:
[0067] 1、本發(fā)明提供的方法能夠快速生成協(xié)議接口,定長數(shù)據(jù)協(xié)議適用于任何語言,從 而無需多語言調(diào)試,大幅度提高容錯率。
[0068] 2、本發(fā)明提供的方法在通訊協(xié)議變更后其他語言工作量為零,提高了工作效率。
[0069] 3、本發(fā)明提供的方法在二次開