首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理数据导入/导出的开发模式

处理数据导入/导出的开发模式
EN

Software Engineering用户
提问于 2012-04-17 13:34:22
回答 2查看 1.6K关注 0票数 5

我有一个基于ASP.NET的web应用程序,允许最终用户将数据导出为平面文件格式。(实质上是对他们的工作进行实时备份)

在稍后的日期,他们可以重新上传(导入)该数据回到web应用程序。

备份的实际格式非常琐碎。使用WCF DataContractSerializer将对象图序列化为xml,然后压缩生成的xml文档。导入、解压缩并反序列化数据。

这个方法有一个小问题。版本控制..。随着时间的推移和数据结构的变化(属性/子集合被添加/移除或重命名),以前导出的用户版本的数据将不再映射到应用程序中的对象图。

是否有任何解决这个问题的具体模式或做法?或者其他你能推荐的阅读材料。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2012-04-18 13:28:59

多年来,我们一直在使用.NET Xml序列化相当大的.NET对象图。我们选择了一种非常简单的方法:在代码级别保持对象向后兼容。我们通常只添加新属性,在修改属性的数据类型的一种情况下,我们用修改过的数据类型创建了一个新属性,并在用户升级时从旧数据中初始化它。

我认为我们建立的一个最佳实践是,任何新属性总是作为一个完整的属性添加,而不仅仅是一个类成员变量。这使我们能够确保代码始终将新属性初始化为有用的默认值(而不是在反序列化期间初始化的空白/空值)。

这已经涵盖了5年来对应用程序的升级,没有将对象的旧版本反序列化为应用程序的更新版本所导致的错误。(一旦我们采用了上述方法)。

票数 2
EN

Software Engineering用户

发布于 2012-04-22 15:26:07

您是否考虑过向导出中添加版本,然后在导入期间进行版本比较?

如果版本不匹配,您可以失败导入,或者警告用户导入可能失败,我看不到任何其他合理的解决方法。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/144833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档