【发布时间】:2013-09-04 07:51:19
【问题描述】:
我们希望在 Objective C 和 C# 之间有效地传递一个森林 - 一个包含以下值的字典:字典、数组、集合、数字、字符串、字节缓冲区(在时间方面,空间是一个较小的问题)。 Google 的 Protocol Buffers 看起来不错,但它们似乎只处理结构化数据,而我们的则是任意的。最终我们可以自己编写一个二进制(反)序列化器,但这肯定是之前完成的,并在某个地方作为 FOSS 发布?
【问题讨论】:
-
为什么是二进制?否则 JSON 将是显而易见的选择。如果您需要在带宽受限的介质上传输大量数据:JSON,然后进行压缩。
-
使用“标记联合”消息(带有枚举值的消息,说明它是什么类型的值,然后每种类型都有一个字段)协议缓冲区可以非常灵活地表示数据。
-
@JonSkeet 它甚至不需要被标记,考虑一下 - 只需检查哪个有值。当然,它也不会是正常意义上的真正的
union... -
@Richard,字符串操作可能很慢,尤其是在处理字节缓冲区时(我们不想开始搞乱 base64)。
-
@JonSkeet,有意思,我再看看。
标签: c# objective-c serialization unity3d binary-serialization