Base64 для больших файлов? - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю над простой программой для передачи файлов и папок в c # с использованием протокола tcp.

Метод, который я использую для передачи файла, состоит в том, чтобы разделить его на маленькие кусочки. Каждая из этих частей будет закодирована в Base64 и вставлена ​​в более сложное сообщение JSON, которое затем будет отправлено на другую сторону. Так что каждое сообщение всегда будет в текстовом виде благодаря Base64.

У меня нет большого опыта работы с сетями, и я решил сделать этот выбор, потому что чтение в Интернете, отправка потока байтов без какого-либо кодирования может привести к тому, что некоторая часть сообщения может быть интерпретирована маршрутизатором или брандмауэром как команда, рискующая прервать соединение.

Моя проблема в том, что мое программное обеспечение также работает с очень большими файлами (> 10 ГБ), а кодировка base64 только увеличивает размер данных и делает передачу очень медленной, потому что процессор так много работает для непрерывного кодирования / декодирования.

Теперь я хотел бы знать:

  • Правда ли, что, например, отправка простого файла, преобразованного только в байты, без предварительного кодирования в каком-либо формате, рискует вызвать проблемы на маршрутизаторе или брандмауэре?
  • Правильно ли использовать Base64 для передачи больших файлов?
  • Есть ли лучшие альтернативы?

1 Ответ

4 голосов
/ 08 апреля 2019

Правда ли, что, например, отправка простого файла, преобразованного только в байты, без предварительного кодирования в каком-либо формате, рискует вызвать проблемы на маршрутизаторе или брандмауэре?

Совсем нет. Совершенно нормально делать, например, все, что HTTPS-соединение является двоичным - и это работает.

Правильно ли использовать Base64 для передачи больших файлов?

Хотя это можно сделать, это бесполезные издержки, если нижележащий уровень поддерживает двоичные данные.

Есть ли лучшие альтернативы?

Используйте двоичный файл напрямую. Не кодируйте и не декодируйте ничего. Не заключайте его в слои, подобные JSON, которые на самом деле не нужны для передачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...