Просто небольшое замечание, я прошел путь base64, и он работает просто отлично, но он идет с жестким снижением производительности, особенно при интенсивном использовании. Мы делаем это с фрагментами документов размером до 20 МБ, и после кодирования base64 они могут занимать более 65 МБ (с тегами и данными), даже с архивированием.
Однако большая проблема заключается в том, что кодирование .NET base64 может занимать до 10 раз больше памяти при выполнении кодирования / декодирования и может часто вызывать исключения OOM, если они выполняются неоднократно и / или выполняются в нескольких потоках.
Кто-то, по схожему вопросу рекомендовал ProtoBuf в качестве опции, а также Fast InfoSet в качестве другой опции.