为什么序列化称为序列化?

Eri*_*ric 9 serialization

我刚想到,序列化对于将数据结构写入磁盘的过程来说似乎是一个奇怪的名称.维基百科和谷歌对这个名字的起源没什么帮助.为什么序列化称为序列化?是否与将数据写入磁带有关?

编辑:要清楚,我对"序列化"一词的起源感兴趣,而不是数据需要"串行"才能传输的事实.

Guf*_*ffa 5

与将数据写入磁带有关吗?

这非常接近事实。存储在磁带上的数据显然是以串行方式存储的,即它基本上是从磁带一端到另一端的一系列位。然而,不仅仅是磁带上的数据以这种方式串行。即使不是那么明显,以任何方式保存或传输的数据都是以大致相同的方式串行的。磁盘上的文件或通过网络发送的流是一系列具有开始和结束的字节。

相比之下,当一个对象驻留在内存中时,它可以分散在内存的多个部分。例如,字符串列表不是一个字符串紧随另一个字符串的单个内存块,而是一个指针块,其中每个指针都指向存储其中一个字符串的内存的不同部分。

当你想要存储或传输一个对象时,你不能只获取分散的数据并按原样发送。您必须获取数据的不同部分并将其排列为单个字节序列。这就是序列化的用武之地。


use*_*421 5

您需要从前了解几个概念。

  1. 串行访问:数据写入只能从头到尾读取的介质上,例如主要是磁带,但带有行分隔符的文本文件是另一个例子,实际上是 TCP 套接字。

  2. 顺序访问:数据被写入可能支持随机或索引访问的介质上,但我们目前所做的只是顺序访问,即从头到尾。许多操作系统过去支持“相对”和“索引”文件,它们都可以按顺序访问,但也可以分别通过位置或键值访问。

当您考虑序列化对象流的性质时,“串行”显然是适用于此处的术语。您不能通过位置或键访问它,只能按顺序访问它。


小智 3

另一个问题盗来的:

“......为了传输任何信息,您需要将该信息的所有部分放入一系列字节中。

为了传输充满信息的记录,您必须“序列化”组成该记录的所有字节,通过线路发送它们,并在另一端将它们反序列化回记录中。

随着客户端/服务器应用程序的出现,这个概念被推广到将对象序列化为某种(文本)形式,可以通过网络传输并在另一端反序列化回对象。

客户端/服务器通信始于几个专有协议,这些协议处理客户端和服务器之间传输之前和之后对象的解构和重建。通过用于客户端服务器通信的 SOAP,XML 成为对象文本表示的事实上的协议标准。Javascript 和大量使用它的 Web 客户端带来了对更简洁表示的需求,并催生了 Json。”