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格式。
例如,我想象一下这些方面的一些指导:
谢谢!
如果有这种类型的Microsoft Bond问题有任何活跃的论坛社区,也会感兴趣,我无法找到...
答案 0 :(得分:3)
我也不知道任何明确的架构演变指南,这肯定是Bond文档中的一个缺口。从我自己与邦德的合作中,我可以回答你的一些问题:
CompactBinary
格式的所有重要内容都是字段序数。DefaultAttribute
仅对接口成员有效。您可以添加必需的字段而无需进一步注释,但在对旧记录(不包含该必填字段)进行反序列化时,我预计会出现运行时错误。_Obsolete
后缀)并引入"更正"的新字段。类型。为了它的价值:你写下你正在使用F#,一些F#特定的更改正在制作中,请参阅here。这将支持记录,联合和核心F#数据类型。
更新:Bond文档中现在有section on schema evolution。
答案 1 :(得分:-1)