protobuf 二进制可读性太差, 费半天劲所能节省的也不过是keyname而不是value,把keyname定的简洁一些就行(protobuf严重的过度设计,protobuf3 删了一些,稍微好点)
凡是跟json功能重叠的二进制编码都是浪费.
把 json5utf8bytes 跟图像语音之类bytes一起作为 byte[][] 编码进 messagepack 是最简洁的, 而且没有重复设计(只采用messagepack的子集, 只对byte[][]编解码)
只用ptotobuf的byte[][]编码比messagepack麻烦一点(varInt可读性差), 而且repeated的设计不给消息结尾(messagepack数组有长度), 还得另外处理消息分包问题
要性能就直接底层传C结构定义,用c代码作为schema, 要糙快猛就直接json, 夹在中间不上不下的二进制json都会被逐渐抛弃
【 在 dgiij 的大作中提到: 】
了解下protocol buffer?
【 在 ABCDEFGHJKLM 的大作中提到: 】
: 目前想到的最好的方案(跨语言交互,例如 cpp <-> python):
: 把所有的数据视为 字节数组的数组 用msgpack编码, [0]放消息类型, [1]放json5, [2]以后是二进制数据;
: 可以很容易手动C++编码解码, python也可以按msgpack的标准来处理, 仅使用 msgpack 的子集, 0xC4-C6 表示二进制串, 0x90-0x9F \xdc \xdd 表示数组;
: ...................
--
修改:ABCDEFGHJKLM FROM 114.253.35.*
FROM 114.253.35.*