Microsoft Bond 是否有一些关于架构如何随时间演变的最佳实践?我想确保我们遵循最佳实践,以便我们有两种方式的兼容性(即允许我们的 Bond 类型将旧版本演变为当前版本,以及允许从新版本转换回旧版本的向后兼容性)。我没有在文档中看到这一点(例如https://microsoft.github.io/bond/manual/bond_cs.html或https://microsoft.github.io/bond/manual/compiler.html#idl -syntax),尽管其他序列化框架(如 Avro)在其文档中明确详细说明了这一点。
值得一提的是,我们使用 .NET (C#/F#) 编写并打算最初使用 CompactBinaryWriter 和 CompactBinaryReader 格式。
例如,我想象一些沿着这些方向的指导:
- 由于字段序号用于字段解析,而不是直接使用名称(SimpleJSON 除外),因此字段名称可能会随时间而变化。我相信这是真的,是吗?
- 添加新的“必填”字段需要您为该字段提供默认值
- 删除新版本中的字段是可以的,前提是旧版本分配了默认值
- 改变字段的类型呢?例如,一个字段可以从版本 1 中的字符串字段更改为版本 2 中的 int64 吗?它可以从字符串更改为自定义联合(带有可选字段的自定义类型)吗?
- 还有其他建议吗?
谢谢!
如果有针对此类 Microsoft Bond 问题的任何活跃论坛社区,我也会感兴趣,但我找不到...