消息協議框架:Darks Codec
Darks Codec是一個輕量級的通信消息協議編解碼框架。它支持將JAVA對象與絕大部分基于字節的消息協議之間進行互相轉換,以此協助開發人員便捷有效的快速構建消息協議,并為TCP粘包斷包等問題提供了有效的解決方案。它能讓開發人員從消息協議的實現中解脫出來,讓其更多的關注于消息通信協議的設計及優化,以便讓軟件消息通信的整體設計更加完善。
一、配置方便快捷
只需要幾行參數設置便能實現基礎的消息協議。例如一個基于LITTLE-ENDIAN的協議:
FB FA [ID 32bits] [VERSION 8bits] [COMMAND] FF
只需簡單構建JAVA對象
public class SimpleMsg { int id; byte version; String command; }
并在編碼時配置
ObjectCoder coder = new ObjectCoder(); coder.getCodecConfig().setEndianType(EndianType.LITTLE); coder.getCodecConfig().addWrap(new IdentifyWrapper(new OCInt16(0xFAFB), new OCInt8(0xFF)));
SimpleMsg msg = new SimpleMsg(); msg.id = 32; msg.version = 1; msg.command = "running"; byte[] bytes = coder.encode(msg);
此編碼會輸出
FB FA 20 00 00 00 01 72 75 6E 6E 69 6E 67 FF
以上簡單例子列舉了增加前置及后置標識位的代碼。詳細文檔請參見官網。
二、支持多種編碼策略
Darks Codec可以對消息數據進行一種或同時多種封裝處理。
-
支持對消息數據進行前置或后置標識的封裝處理。
-
支持對消息數據進行校驗碼添加。例如CRC16、ADLER32、CRC32、自定義校驗等。
-
支持針對較大的消息數據進行壓縮處理。例如GZIP、JZLIB、BZIP、自定義壓縮等。
-
支持針對機密消息數據進行加密處理。例如AES、RSA、BASE64、自定義加密等。
-
支持對消息數據總長度添加封裝。
-
在后續的開發中,會支持新的序列化方式以替代JAVA序列化數據過于冗余龐大的問題。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!