我对协议缓冲区、Apache Thrift 和其他数据结构序列化协议有足够的理论知识。我的问题是,如果我需要定义递归数据结构(链接列表、搜索树等)或不同对象之间的某种关系,是否有任何内置的标准方式 Protocol Buffers 或 Apache Thrift 提供设置不同结构之间的链接(我们在正常的编程实践中使用指针)?还是我们必须继续使用指针在不同的数据结构对象之间建立链接?
我想用 C++ API 来做
先感谢您!:)
我对协议缓冲区、Apache Thrift 和其他数据结构序列化协议有足够的理论知识。我的问题是,如果我需要定义递归数据结构(链接列表、搜索树等)或不同对象之间的某种关系,是否有任何内置的标准方式 Protocol Buffers 或 Apache Thrift 提供设置不同结构之间的链接(我们在正常的编程实践中使用指针)?还是我们必须继续使用指针在不同的数据结构对象之间建立链接?
我想用 C++ API 来做
先感谢您!:)
两者都允许类型 X 的消息包含其他类型 X 的消息,都不允许消息包含自身(与 Java 序列化不同)。对于不寻常的情况,否则会非常昂贵。
但也不要发送您的实际数据模型;而是制定您自己的有效线路表示并使用序列化协议来传输它。
我知道这是一百万年的历史,但这里有一些东西:AMF(ActionScript 消息格式)。而且,在你尖叫着逃到深夜之前......这并不是那么糟糕。而且,与更流行的不同,它可以进行循环引用,这没有问题。许多个月前,我为这种格式编写了一个解码器。在 Flash 的鼎盛时期,曾经有一些其他语言的实现,如果没记错的话,有两三个 Java 库、一个 Python 库、一个 PHP 库、一个 .NET 库,甚至更多。还有一个是用 C 写的。
格式本身可能被视为 JSON 的超集,尽管它早在它出现之前就出现了。它旨在序列化从 JavaScrip 派生的语言,但带有一些类型注释,因此它具有某种类型的类型约束。它的人类可读形式是 ActionScript 代码(非常类似于 JavaScript,带有一些与类型注释相关的额外关键字)。该规范是开放的,可以在这里找到:http ://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/amf/pdf/amf-file-format-spec.pdf