DirectStructC 結(jié)構(gòu)體工具
DirectStruct是一個強有力的代碼自動生成工具,它可以自動生成C結(jié)構(gòu)體與XML、JSON、二進制(帶壓縮)等報文之間的轉(zhuǎn)換代碼,還能自動生成ESQL代碼片段,在應用中直接使用自動化代碼以提高開發(fā)效率,避免開發(fā)冗余和手工編碼風險。
DirectStruct生成了哪些自動化代碼?
- C結(jié)構(gòu)體定義
- 批量初始化缺省值函數(shù)
- 網(wǎng)絡/主機字節(jié)序化函數(shù)
- 二進制序列化/反序列化函數(shù)(可帶壓縮)
- XML序列化/反序列化函數(shù)(依賴開源庫fasterxml)
- JSON序列化/反序列化函數(shù)(依賴開源庫fasterjson)
- 嵌入式SQL代碼
- 打印結(jié)構(gòu)體內(nèi)所有字段值函數(shù)
用DirectStruct自動生成的代碼能干什么?
- 直接C結(jié)構(gòu)體通訊交換 : 在特定平臺之間直接把C結(jié)構(gòu)體變量通過TCP扔給對方是一個很誘人的想法,阻礙我們的主要是整型字段的字節(jié)序問題,手工編碼是一件冗余的事情,DirectStruct可以幫助你自動化這一過程。解決了字節(jié)序問題后就可以直接交換報文,避免了通訊發(fā)送前的打包和通訊接收后的解包,所以速度非常快,是某些追求極端性能的場景中的首選報文格式。
- 結(jié)構(gòu)體序列化/反序列化 : 使用DirectStruct自動生成的序列化/反序列化函數(shù),可以將C結(jié)構(gòu)體打包成二進制報文或XML報文或JSON報文等,以及反向解包,是的,打包解包函數(shù)自動生成,省卻了你不少麻煩吧。二進制報文如果啟用了壓縮選項,壓縮后的二進制數(shù)據(jù)塊大幅縮小,更便于通訊高效交換。
- 基于嵌入式SQL的數(shù)據(jù)庫映射接口的代碼自動化生成
- 快速打印結(jié)構(gòu)體內(nèi)所有字段值 : 對于一個大結(jié)構(gòu),編寫他的打印所有字段值的函數(shù)是一件很無聊的事情,你可以用DirectStruct幫助你自動生成日志函數(shù),輸出到屏幕,或你自己的日志流中。
為什么使用DirectStruct?
- 靈活的報文定義語法 : 命令行工具dsc讀入定義文件,生成自動化代碼,支持子結(jié)構(gòu)嵌套、子結(jié)構(gòu)數(shù)組、定義文件包含等靈活配置方式。
- 跨平臺:DirectStruct支持WINDOWS、Linux、AIX等主流操作系統(tǒng),尤其是多平臺中不同的表達方法,如64位整型,相同的IDL定義文件將生成不同平臺的標準。
性能壓測
壓測結(jié)論:
- DirectStruct序列化(帶壓縮)后的報文大小66字節(jié),而Google Protocol Buffer為72字節(jié),DirectStruct在序列化和壓縮報文大小上險勝。
- DirectStruct反復序列化/反序列化(帶壓縮)1000萬次總耗時1.080s,而Google Protocol Buffer總耗時4.248s,DirectStruct在序列化性能上完勝。
- DirectStruct編譯客戶應用代碼時不需要額外的頭文件和庫文件,只需要工具dsc生成的IDL_AllTypes2.dsc.c、IDL_AllTypes2.dsc.h即可,而Google Protocol Buffer不僅需要PressProtobuf.pb.cc、PressProtobuf.pb.h,還需要/usr/local/include/google/protobuf下的一大堆頭文件以及/usr/local/lib/libprotobuf.a(9MB),還依賴于-lpthread,編譯環(huán)境復雜。
評論
圖片
表情
