2012-01-25 371 views
1

我想了解序列化的概念。在许多文章中,序列化是将对象转换为字节序列(二进制数据)的过程,在通过网络传输对象时非常有用。序列化概念-java,c#,

我在这里有些困惑。让我们说,我有一个课堂对象,我想将它传递给一个远程过程。当我说对象意味着,它本身表示一组位和字节在同一台计算机中(因为计算机以位和字节的形式保存任何数据)。在这里,它通过网络传输这些比特和字节。对 ?我在这里并不理解序列化概念。

任何帮助表示赞赏。谢谢。

回答

2

类的对象将包含指向字符串和其他子对象的指针,引用或其他内容。这些指针是仅在发送计算机的地址空间中有意义的存储器地址,因此如果通过网络将其发送到另一台计算机,则这些地址无效。

换句话说,如果你发送一个对象的字节,因为它通过线路存在于内存中,你将只在另一端获得它的shell,并且它的所有内容都将丢失。该对象将只包含指向无意义内存位置的指针。

序列化过程包括遵循这些指针并在其末尾序列化对象,以便整个对象图可以通过电线发送,然后在另一端重新组装,固定指针以使它们正确为目标计算机的地址空间。

0

序列化是对象状态的表示,用于传输或存储。 如果你完全控制了环境,你几乎可以写入内存数据并在稍后重新读取它。

如果你没有完全控制,你需要一个规范来编写和解析二进制数据。例如,图像,声音和视频格式是关于如何对给定媒体进行二进制序列化和反序列化的规范。

如果您需要在两种不同的编程环境(C#和Java)之间传递对象。您必须为序列化选择协议,因为您无法在两种环境之间传递原始对象状态。您可以编写自己的逻辑来执行此操作,.net和java都支持解析二进制数据和对象生成。或者,您可以使用SOAP之类的公共规范,并使用标准库进行序列化和反序列化。