请帮助我理解协议缓冲区内部实现的向后兼容性和可扩展性属性.
如何在删除数据字段时实现向后兼容性?我想,生成的数据访问代码返回数据流中不存在的属性的空值,并且消费者代码必须始终专门检查这些空值并相应地采取行动.如何将空值标准化?
同样在这种情况下,旧代码如何"知道"该属性不再存在于数据流中?
我想,一个解决方案是旧的数据永远不会从内部流规范中删除,只能用空值替换,但在字段上使用内部版本控制可能会实现相同的效果.
也许是一个更明确的问题:旧代码如何知道忽略新版本.proto规范添加的新数据?这可能比1)通过在内部序列化结构中具有大小字段,并且一次只读取那么多字节,同时也仅在结构的末尾添加新字段更直接.
试图理解所有这些,以扩展旧的数据格式,以提供代码和数据之间的向后/向前兼容性作为副项目.
编辑:格式化.
谢谢!