我有一个可以将文档(类型为IDocument)序列化到磁盘上的应用程序。从那里,我制作了另一个应用程序,可以打开该文档(IDocument实现IPrintDocument)以供查看。
假设我已经将IDocument写入磁盘,然后在一周后将一个字段添加到IDocument对象。写入文件的程序和打开文件的程序都将使用IDocument的新“版本”进行更新。尝试打开以前的IDocument版本时,它会中断(我想-没机会检查,我在这里向前看)。是否存在已知的缓解此类问题的模式?
最佳答案
是的-使用tolerant to versioning的序列化机制。
可以预见的是,我将建议使用Google's Protocol Buffers,因为至少有two viable .NET实现。只要您小心,协议缓冲区就可以向后和向前兼容-您可以使用旧代码读取新消息,反之亦然,旧代码仍将能够保留其不了解的信息。
另一个选择是XML,无论是否使用.NET的内置XML序列化。据我所知,内置的序列化在版本控制方面不是特别灵活。