Какова связь между сериализацией и потоковой передачей? - PullRequest
0 голосов
/ 16 ноября 2018

Всегда, когда я нахожу, что некоторые статьи или видео говорят о потоке, они обязательно говорят о сериализации? Какая связь между ними? или быть конкретным, Можем ли мы сказать, что поток данных всегда нуждается в сериализации, или мы можем найти поток данных без сериализации?

1 Ответ

0 голосов
/ 20 ноября 2018

Во-первых, полезно иметь напоминание о последовательной или параллельной связи: если мы возьмем простой пример передачи байта, в параллельном случае все 8 бит отправляются одновременно, а в последовательном случае 8 битпосылается один за другим, и байт снова создается на принимающей стороне.

Например, для вашего домена видео: если вы представляете кадр видео как большую коллекцию байтов, скажем, 720 на 1280 пикселей, и каждыйпиксель представлен байтом, тогда нам нужно 921 600 байтов для представления кадра.

Если вы смотрите потоковое видео, вам нужно отправлять каждый кадр (плюс накладные расходы, которые мы здесь проигнорируем для простоты) с серверана клиентское устройство, следовательно, вам нужно отправить 921 600 байт для каждого кадра.

Если у вас были очень (очень!) большие параллельные соединения, которые могли бы передавать 921 600 байт параллельно между сервером и клиентом водно общение, тогда это будет легко понять.

Однако, это почти всегда не так, даже для гораздо меньших структур данных, поэтому сериализация - это имя, обычно назначаемое процессу взятия 921 600 байт и разбиения их до размера, который вы можете передавать -и этот размер часто составляет один бит за раз.

Обычно видео будет разбито на пакеты и пакеты, передаваемые клиенту.Сами пакеты также являются просто коллекциями байтов, и если соединение позволяет передавать только один бит информации за один раз, то пакет необходимо разбивать и отправлять «последовательно» по одному биту за раз.

Чтобы усложнить ситуацию, как это обычно бывает в компьютерных науках и коммуникациях, эти термины могут означать разные вещи в разных контекстах.

Например, вы можете заметить, что в нем упоминается, что вы можете передавать или сериализовать объектв некотором клиент-серверном общении.Как правило, это означает, что вы можете либо отправить «поток» необработанных данных и позволить клиенту отвечать за то, как его интерпретировать, либо вы можете использовать структуру или базовый механизм, который будет принимать объект, преобразовывать его в формат, который можетпередаваться последовательно, а затем восстановить его на другом конце и передать его клиенту.На самом деле фактическая связь является последовательной в обоих случаях (если она использует последовательный канал связи), поэтому здесь термины используются по-другому.

...