序列化的目的

时间:2012-08-26 16:31:20

标签: c# serialization

我知道序列化是一种将对象转换为字节码的方法,但这种机制的目的是什么?它可以用来举例来保存游戏状态吗? (通过序列化地图,玩家等对象)

5 个答案:

答案 0 :(得分:3)

以下是4个理由。

  1. 如果您有两台运行相同代码的计算机,并且需要进行通信,则一台计算机可以轻松地构建一个包含其想要传输的信息的对象,然后将该对象序列化为另一台机器。这不是最好的沟通方式,但它可以完成工作。

  2. 如果要将特定操作的状态存储在数据库中,可以将其轻松序列化为字节数组,并存储在数据库中以供日后检索。

  3. 如果您需要Object的精确副本,并且不想编写自己的专用clone()类,只需将对象序列化为字节数组,然后反序列化它到另一个目标实现了这个目标。

  4. 真的只是上面的一个应用程序,但有时一个对象需要10分钟才能构建,但是只需要10秒钟来反序列化。因此,不要抓住内存中的巨大对象,而是通过序列化将其缓存到文件中,并在以后需要时将其读取。

答案 1 :(得分:3)

  

在计算机科学中,在数据存储和传输的背景下,   序列化是转换数据结构或对象的过程   将状态转换为可以存储的格式(例如,在文件或文件中)   内存缓冲区,或通过网络连接链路传输)和   稍后在相同或另一个计算机环境中“复活”。

序列化的输出格式并不总是字节数组,它可以是XML,JSON,简单文本或任何其他可以完全或部分描述给定对象状态的格式。

这个过程的应用是无数的。

  • 保存/加载功能大部分时间都是使用序列化完成的。
  • Web服务使用XML / JSon序列化来传输数据 componnents。
  • 二进制序列化可用于通过网络传输对象数据。
  • 撤消/重做功能还使用序列化/反序列化来保存旧版本 对象的状态,还有其他方法。

基本上,序列化用于存储需要稍后检索的状态的单个数据对象。

答案 2 :(得分:2)

这样可以保持或运输物品。

http://msdn.microsoft.com/en-us/library/7ay27kt9(v=vs.71).aspx

  

序列化是将对象的状态转换为的过程   可以 保留或传输 的表单。补充的   序列化是反序列化,它将流转换为   宾语。这些过程共同使数据易于存储和存储   传送。

答案 3 :(得分:2)

您经常需要序列化对象,也就是说在稍后补充的表单中“保存”,或者通过网络传输它们。这可能是用户的偏好,应用程序的状态,文档,发送到服务的命令等......

您在此处有链接:http://msdn.microsoft.com/fr-fr/library/7ay27kt9.aspx

答案 4 :(得分:2)

它本质上允许您保存任何对象的状态,以便相同的实例(对象)可以“恢复生机”。 I.E.保存所有实例变量。所以,是的,用它来保存玩家,他的统计数据,库存等等都是使用序列化的很好的例子。

但请记住,序列化对象时,序列化对象引用的所有对象也会被序列化。并且任何这些引用对象引用的所有其他对象也被序列化。等等等等。因此,为了使序列化无故障地工作,任何可能与序列化对象相关联的潜在对象也必须是可序列化的。

另请注意,不保存静态变量。此外,您不希望保存的实例变量可以标记为 transient