我一直在阅读我能找到的所有内容,以了解什么是序列化。人们常说,我们需要序列化,以便我们可以将内存中的对象转换为易于通过网络传输并持久保存在磁盘上的形式。
我的问题是 - 内存中对象的结构有什么问题导致难以传输或存储?
也有人说对象是二进制形式,需要序列化。AFAIK,计算机存储或内存中的所有内容都是二进制的。他们想传达什么?
一些技术细节将不胜感激。
编辑1:
我一直在研究 C# 代码示例,但它们都使用框架中可用的“序列化” 。也许我需要使用 C++ 才能看到细节并体验痛苦。
我一直在阅读我能找到的所有内容,以了解什么是序列化。人们常说,我们需要序列化,以便我们可以将内存中的对象转换为易于通过网络传输并持久保存在磁盘上的形式。
我的问题是 - 内存中对象的结构有什么问题导致难以传输或存储?
也有人说对象是二进制形式,需要序列化。AFAIK,计算机存储或内存中的所有内容都是二进制的。他们想传达什么?
一些技术细节将不胜感激。
编辑1:
我一直在研究 C# 代码示例,但它们都使用框架中可用的“序列化” 。也许我需要使用 C++ 才能看到细节并体验痛苦。
一个简单明了的例子;对象是对文件系统中文件的file
引用,但它本身并不是很有用。序列化它最多会将文件名传递给接收器,接收器可能没有文件系统来读取文件。
相反,当您通过网络传递它时,您可以将其序列化以包含文件的内容,该文件可供接收方使用。
序列化基本上只是获取一个在内存中可能没有非常有用的内容的对象(指针/对存储在其他地方的数据的引用/...),并将其转换为接收器实际可用的东西。
例如,如果您有此类的对象
public class myClass {
private String myString = null;
// getters and setters
}
内存中的表示将只是指向另一个对象(String
)的指针。您无法仅通过存储二进制形式来调用对象的原始状态。