对象序列化实际用途?

时间:2010-06-03 03:07:04

标签: serialization programming-languages

您使用过多少个软件项目使用过对象序列化?我个人从来没有遇到过使用对象序列化的场景。我能想到的一个用例是,一个服务器软件将对象存储到磁盘以节省内存。是否存在其他类型的软件,其中对象序列化对于数据库是必不可少的或首选的?

11 个答案:

答案 0 :(得分:4)

我在很多项目中都使用了对象序列化。有时我们使用它来在本地存储特定于计算机的设置。我还使用XML序列化来简化XML文档的交互和生成。它在通信协议中也非常有用。在一端序列化并在另一端重新充气。

答案 1 :(得分:4)

好吧,将对象转换为XML或JSON是一种在Web上很常见的序列化形式。我还参与了一个项目,在这个项目中,对象被创建并在一个应用程序中序列化为二进制文件,然后导入到另一个自定义应用程序中(尽管它很脆弱,因为它使用C#并且序列化在过去的.NET框架版本之间已经破坏了)。此外,具有复杂结构的应用程序设置可能对序列化很有用。我还认为远程处理API使用序列化进行通信。基本上,序列化通常只是一种存储对象状态的方法,这有很多不同的用途。

答案 2 :(得分:2)

我正在使用序列化来跨TCP套接字传递对象。您将XmlSerializers放在任何一侧,它会将您的数据解析为随时可用的对象。如果你做了一些基础工作,你可以得到它,使你基本上来回传递物体,它使插座通信变得非常容易,将它减少到socket.Send(myObject);

答案 3 :(得分:2)

以下是我能想到的几个用途:

  1. 通过网络发送对象,最常见的示例是跨群集序列化对象
  2. 为(某种)缓存序列化对象,即将状态保存在文件中并稍后再读回来
  3. 将被动/巨大数据序列化为文件以最小化内存消耗并在需要时将其读回。

答案 4 :(得分:2)

进程间通信是一个很大的问题。

答案 5 :(得分:1)

你可以把db&序列化。 f.ex.当你必须将具有大量属性的对象(通常是动态的,即一个对象属性集与另一个不同)存储到关系数据库时,你不希望为每个属性创建一个新列

答案 6 :(得分:0)

我们开始使用一个系统,每15分钟左右将所有数千个内存中对象序列化到磁盘上。当开始花费太长时间时,我们切换到将对象保存到关系数据库和pickle文件的混合模式(这是一个python系统btw)。最终,大部分数据都存储在关系数据库中。有趣的是,系统的编写方式使得所有应用程序代码都不会关心那里发生的事情。这一切都是使用XP和数以千计的自动化测试完成的。

答案 7 :(得分:0)

基于文档的应用程序(如文字处理程序和矢量图形编辑器)通常会在用户调用“保存”命令时将文档模型序列化为磁盘。序列化通常比这些应用程序中的复杂数据库更受欢迎。

答案 8 :(得分:0)

使用序列化可以在每次要实现导入/导出功能时节省时间。

每当您需要导出系统数据,创建备份或存储某种设置时,您可以使用序列化而只是保存代表实际配置,数据或其他任何内容的对象的状态。

只有当您需要特定格式的导出/导入数据时,才能构建自定义解析器和导出器/导入器。

序列化也是防改变的。每当您更改交换功能中涉及的对象的格式时,它都可以自动导出,您无需更改导出/导入部件背后的逻辑。

答案 9 :(得分:0)

我们用它作为备份和放大器更新功能。它基本上是序列化的hibernate对象被备份,然后通过更新改变了DB模式,我们提供了一个帮助类,将旧对象“转换”为新的数据库模式。这样我们就拥有了一个非常可靠的更新机制,它不会轻易破解并同时进行自动备份。

答案 10 :(得分:0)

我在一个项目上大量使用XML序列化。该技术用于持久保存到没有通用结构的数据库数据结构,因此无法直接存储数据。我还使用序列化来分离可在运行时更改的应用程序设置。