序列化和流传输之间有什么关系?

时间:2018-11-16 10:52:06

标签: serialization streaming deserialization data-stream

当我发现某些文章或视频正在谈论流时,总是在谈论序列化吗? 这些之间有什么关系?或具体来说, 我们可以说数据流总是需要序列化,还是可以找到一些没有序列化的数据流?

1 个答案:

答案 0 :(得分:1)

首先,提醒一下串行通信与并行通信非常有用:如果我们举一个简单的传输字节的示例,在并行情况下,所有8位是同时发送的,而在串行情况下,这8位是一个接一个地发送,然后在接收端再次建立字节。

对于您的视频域示例,如果您将视频的帧想象为一个很大的字节集合,可以说720 x 1280像素,每个像素用一个字节表示,那么我们需要921,600字节来表示该帧。

如果要流式传输视频,则需要从服务器向客户端设备发送每帧(加上开销,为简便起见,我们将在此处忽略这些开销),因此,您需要为每帧发送921,600字节。

如果您有一个非常大的并行连接,可以通过一次通信在服务器和客户端之间并行传输921,600字节,那么这将很容易理解。

但是,即使对于较小的数据结构,情况也并非总是如此,因此序列化通常是占用921,600字节并将其分解为可以传输的大小以及该大小的过程的名称。一次通常只有一点。

通常,视频将分解为数据包,并将数据包传输到客户端。数据包本身也只是字节的集合,如果连接一次仅传输一小段信息,则需要将数据包分解并一次“串行”发送。

复杂的事物(在计算机科学和通信中通常如此),这些术语在不同的上下文中可以表示不同的事物。

例如,您可能会看到它提到您可以在某些客户端服务器通信中流式传输或“序列化对象”。这通常意味着您可以发送原始数据“流”并让客户端负责如何解释它,或者可以使用将获取对象的框架或底层机制,将其转换为可以串行传输,然后在另一端重建它并提供给客户端。实际上,在两种情况下(如果使用串行通信通道)实际的通信都是串行的,因此此处使用的术语有所不同。

相关问题