我正在处理的项目需要在关闭之前序列化数据结构,并在重新启动时从此序列化数据恢复其状态.
去年,我们正在为.NET 1.1构建,并遇到了一个棘手的问题
我们的代码在.NET 2.0上运行
一个客户升级了一些软件,以某种方式将1.1设置为默认值
我们的代码在.NET 1.1上运行,无法反序列化其存储状态
这个特定的问题是通过禁止特定的软件升级而"解决"的,现在我们的目标是.NET 2.0框架(因此我们不能在1.1上运行)应该不是问题.
这个序列化再次在2.0和更新的框架之间再次发生变化的可能性有多大?如果我们使用
将代码修改为2.0.50727,那么2.0.50727.1434和2.0.50727.nnnn(未来某个版本)之间的变化几率是多少?被序列化的数据结构是来自标准类库的数组,映射,字符串等.
此外,是否可以保证即使在进一步的.NET升级后,也将始终安装2.0.50727框架?微软文档的指针欢迎.
框架版本之间会有变化的可能性很小(但不是零!).目的是您应该能够使用二进制序列化和远程处理在客户端和运行不同框架版本的服务器之间进行通信..NET 1.x和2.0之间的不兼容性是一个补丁可用的错误.
但是,二进制序列化还有其他问题,尤其是对序列化结构版本控制的支持不足.从您描述的用例中,Xml序列化是显而易见的选择:如果您不介意依赖于.NET 3.x,DataContractSerializer比XmlSerializer更灵活.
您不能保证.NET Framework 2.0将始终安装在未来的Windows版本上.但我确信微软会努力确保大多数.NET 2.0应用程序在.NET 4.x及更高版本上保持不变.我没有任何参考资料:任何此类承诺在任何情况下都只适用于下一版本的Windows(Windows 7).