序列化代理模式解决了序列化模式无法解决的问题是什么?

时间:2011-05-10 03:20:46

标签: c# java vb.net serialization proxy

我需要能够将类序列化为字符串,并且我知道2种模式:

1)(正常)序列化模式 2)代理序列化模式

我看过http://lingpipe-blog.com/2009/08/10/serializing-immutable-singletons-serialization-proxy/(谷歌唯一一个谈论代理序列化模式的网站),但仍然无法找到优势优势使用这种模式。有人可以解释代理序列化模式究竟是什么,或者说代理序列化模式究竟解决了正常序列化模式无法解决的问题?

1 个答案:

答案 0 :(得分:1)

默认序列化:

  • 在反序列化
  • 上创建应该是单例的多个类实例
  • 据说已经改变了动态反序列化对象(呵呵?)

第二点是有争议的。谁更改了字节流的数据?如果它可能发生,我们有一个比反序列化更大的问题:安全性。签名/加密流也可以解决序列化问题。

第一个是真实的。序列化相同的单例几次,在另一侧反序列化,并哎呀!你有多个单身人士(multitones?)。虽然这个问题是通过从Enum中生成一个单例来更容易解决,然后JVM将强制执行单个实例。

<强>更新

正如史蒂夫B所指出的那样,博客海报可能会误解/歪曲他所阅读的内容。而不是“序列化,调整字节,然后反序列化”,而不是“序列化,部署新版本的类,反序列化”。是的,这是已知的问题,并且Externalizable接口允许通过完全控制类序列化来巧妙地解决它,因此即使更高版本的类也可以从先前版本创建的流中反序列化自己的数据(如果可能的话)在所有)。