【问题标题】:What are the major use-cases of object serialization? [closed]对象序列化的主要用例是什么? [关闭]
【发布时间】:2013-08-02 19:15:23
【问题描述】:

我一直在搜索和阅读有关对象序列化和相关主题的信息。但是我想不出任何用例。

或者必须使用它的动机或情况是什么?

追问:如果序列化是为了保存对象的状态,为什么Java的对象序列化是必须的?不能将对象的配置保存在文本文件中并通过网络发送吗?

【问题讨论】:

  • 有时您需要将对象的状态(由描述对象的值测量)存储到应用程序之外的某个介质中。无论是将其保存以备后用,将其传输到另一个应用程序等。从技术上讲,当您将数据保存到数据库时,您就是在“序列化”特定格式的对象。
  • @David 我已经发布了一个后续问题。
  • 如果序列化是为了与其他系统(甚至完全是其他平台)共享对象,那么数据格式的标准很重要。是的,可以手动写入文本文件。但是随后需要定义该文件的标准,考虑对象的所有变体,并且任何想要使用该数据的人都必须编写自定义代码以满足该标准。使用现有标准要容易得多。
  • 将对象的配置保存在文本文件中不过是序列化的一种特殊情况。

标签: object serialization


【解决方案1】:

除了其他用户已经提到的之外,序列化功能非常强大并且有多种用途:

有时您想要深度复制一个对象,而避免陷入反射噩梦的简单方法是对其进行序列化:How do you do a deep copy of an object in .NET (C# specifically)?

另一个可能是数据验证。通常,当您计划通过网络传输对象时,您会创建一个定义消息结构的 XML 模式,然后从该模式生成类,这些类将变成您可以传输的对象。在发送您想要序列化的对象之前,例如发送到 XML,以保留对象状态,然后发送该数据流并在另一端根据模式验证您传入的 XML 消息,以确保它符合您的预定义结构,然后反序列化为对象以执行所需的任何面向对象的操作。

【讨论】:

    【解决方案2】:

    查看 MSDN:http://msdn.microsoft.com/en-us/library/vstudio/ms233843.aspx

    序列化允许开发人员保存对象的状态并根据需要重新创建它,提供对象的存储以及数据交换。通过序列化,开发人员可以执行以下操作,例如通过 Web 服务将对象发送到远程应用程序、将对象从一个域传递到另一个域、将对象作为 XML 字符串通过防火墙传递,或者维护安全性或用户特定跨应用程序的信息。

    【讨论】:

      【解决方案3】:

      有时您需要存储对象的状态。这篇文章covers这个话题还不错。引用文章中关于序列化原因的文章:

      序列化提供:

      • 一种持久化对象的方法,例如将它们的属性写入磁盘上的文件,或将它们保存到数据库中。
      • 一种远程过程调用的方法,例如,在 SOAP 中。
      • 一种分发对象的方法,尤其是在 COM、CORBA 等软件组件中。
      • 一种检测时变数据变化的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-18
        • 2010-10-01
        • 2011-04-06
        • 2011-04-13
        • 2011-01-29
        • 2010-11-29
        • 2011-02-28
        相关资源
        最近更新 更多