消息協議框架:Darks Codec

jopen 10年前發布 | 16K 次閱讀 消息 消息系統

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序列化數據過于冗余龐大的問題。

項目主頁:http://www.baiduhome.net/lib/view/home/1397999673343

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!