更改protobuf序列化类型时我需要注意什么,以免破坏现有客户端

时间:2013-11-26 14:55:37

标签: protobuf-net

我需要在不破坏现有客户端的情况下对我的序列化类型进行更改(在这种情况下为添加剂)。我需要注意什么?或者换句话说,哪种类型的变化肯定会破坏现有的客户?

1 个答案:

答案 0 :(得分:2)

添加剂更改通常不会破坏客户端。未知字段将被忽略或存储为“扩展”数据。然而,一种可能的情况是继承:如果你有

abstract A
   concrete B

你通常会序列化B实例,这些实例效果很好;之后你添加C:

abstract A
    concrete B
    concrete C

然后将无法识别C类型的新数据。系统将回归到它所知道的 - A - 但这是抽象的,所以不会是可创造的。也许“不要在DTO模型中使用抽象基类”是这里的建议!

请注意,更改字段几乎普遍是一个糟糕的字段。例如,不要将字段5从int更改为字符串。