首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在升级过程中迁移到Json.NET类型的版本2的最佳实践

在升级过程中迁移到Json.NET类型的版本2的最佳实践
EN

Stack Overflow用户
提问于 2014-11-04 06:15:46
回答 2查看 409关注 0票数 4

目前,我们有一个带有属性的类型,用来表示在将数据持久化到磁盘之前必须加密哪些属性。我们使用反射来查看用ConfidentialAttribute修饰的属性,加密值,然后序列化。在反序列化时,我们解密ConfidentialAttribute修饰的属性。下面是该类型的一个简化示例。

代码语言:javascript
复制
class MyObject_V1
{
    [Confidential]
    public string StringData
    {
        get;
        set;
    }
}

我们正在做一些重构/清理,并计划摆脱ConfidentialAttribute,并使用类似于下面的东西。

代码语言:javascript
复制
class MyObject_V2
{
    public ConfidentialString StringData
    {
        get;
        set;
    }
}

class ConfidentialString
{
    [OnSerializing]
    public void Serialize(StreamingContext context)
    {
        //Encrypt value...
    }

    [OnDeserialized]
    public void Deserialized(StreamingContext context)
    {
        //Decrypt value...
    }

    public string Value
    {
        get;
        set;
    }
}

我们需要在升级过程中维护配置数据。我的问题是,将持久存储到磁盘的MyObject_V1的配置迁移到持久存储到磁盘的MyObject_V2的最佳实践是什么。我正在考虑的一些选择是让两个类并存,或者让两个属性并存,并在第一次访问对象时使用一些逻辑来执行迁移。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2016-03-30 15:11:24

Stack Overflow用户

发布于 2014-11-04 09:55:36

如果我没弄错你的要求,那应该很容易。如此简单,你将不需要做任何事情!

当序列化为MyObject_V2时,MyObject_V1应该产生完全相同的输出。因此,在更改之前序列化的MyObject_V1应该反序列化为MyObject_V2,而不做任何修改。您只需要正确地实现SerializeDeserialize方法。

此外,这是最好的实践:保持完全的向后兼容性,并使您的重构只影响实现的尾巴。如果您可以在重构代码的同时保持配置文件不变,请这样做。

总而言之:迁移数据的最好方法就是根本不必迁移它!

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

https://stackoverflow.com/questions/26724270

复制
相关文章

相似问题

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