【问题标题】:How to make Struct Objects can have any additional fields in Thrift IDL如何使结构对象可以在 Thrift IDL 中具有任何附加字段
【发布时间】:2017-10-24 18:37:38
【问题描述】:

如何使任何结构对象包含结构本身未定义的任何字段。例如。

struct Point {
   1: required x i32
   2: optional y i32
}

不,如果有人也在 struct 中传递 z 变量,它会传递。那么,我怎样才能让结构体处理额外的字段呢?

【问题讨论】:

    标签: thrift


    【解决方案1】:

    关于 Thrift 的一个关键点是 IDL 预先定义了所有内容,因此生成的代码非常紧凑且切中要害(因此速度很快)。所以一般来说,这在设计上是不可能的。

    尽管将其他数据视为一种 blob(文本或二进制)并通过其他方式对它们进行反/序列化,这可能是一种选择:

    struct Point {
       1: x i32
       2: y i32
       3: binary more_data
    }
    

    more_data 字段可以被其他一些 Thrift 步骤序列化,或者它可以是 sth。完全不同,比如压缩的 JSON 或其他最适合的东西。

    这种方法的明显缺点是,您需要两个步骤来进行序列化和反序列化,其中只有一个步骤:您需要一个用于内部 blob 内容,一个用于外部 Thrift 胶囊。无论这是否是您的用例的问题 - 我不能告诉您。

    【讨论】:

      猜你喜欢
      • 2018-11-20
      • 2013-09-26
      • 1970-01-01
      • 2019-03-23
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多