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

Serialization 为什么序列化称为序列化?,serialization,Serialization,我刚刚想到,对于将数据结构写入磁盘的过程来说,序列化似乎是一个奇怪的名称。维基百科和谷歌对这个名字的起源没有多大帮助。为什么序列化称为序列化?它是否与将数据写入磁带有关 编辑:说清楚,我感兴趣的是“序列化”一词的起源,而不是数据需要“串行”才能传输的事实。从: “…为了传输任何信息,您需要将该信息的所有部分放入一系列字节中 为了传输一个充满信息的记录,您必须“序列化”包含该记录的所有字节,通过线路发送它们,另一端必须将它们反序列化回一个记录 随着客户机/服务器应用程序的出现,这个概念被推广到将对

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

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

从:

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

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

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

客户机/服务器通信始于几个专有协议,这些协议处理客户机和服务器之间传输前后对象的解构和重建。通过用于客户机-服务器通信的SOAP,xml成为对象文本表示的实际协议标准。Javascript和丰富的使用它的web客户端需要更简洁的表示形式,并产生了Json。”

它是否与将数据写入磁带有关

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

相反,当一个对象驻留在内存中时,它可以分散在内存的几个部分。例如,字符串列表不是一个字符串紧跟其后的单个内存块,而是一个指针块,其中每个指针指向存储其中一个字符串的内存的不同部分


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

您需要从很久以前就了解一些概念

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

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


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

    只是猜测,但结构化实体会从通常与该实体无关的字母表转换为线性符号序列。在新的表示下,没有任何原始结构和语义可以访问。因此,从头到尾把它作为一个整体来理解才有意义。我投票决定把这个问题作为离题题来结束,因为它不是一个特定的编程问题。我投票决定把这个问题作为离题来结束,因为这个问题不是一个实际的编程问题,正如。@MartijnPieters中所述。这是一个有明确答案的问题,非基于意见的回答(有人出于某种目的创造了这个术语)。它很实用,因为它是我们大家都使用的一个术语,所以理解它的来源很好。当然,但这并不是本网站的主题。不管这是否准确,它都会帮助我记住。@NaN我从1971年就开始这么做了。你认为它可能不准确的依据到底是什么?记住一些可能不准确的事情到底有什么意义呢?@EJP3我不清楚。我有时会对序列化或反序列化的方式感到困惑。这个答案帮助我理解。我可能错误地认为凯尔的回答与你的相矛盾,但你的回答为我消除了困惑