В .NET я хотел бы вызвать веб-сервис в стиле REST, который ожидает тело POST, представляющее собой двоичную сериализацию класса, в следующей форме:
public class Test
{
public string Name;
public byte[] Data;
}
Поток битов должен быть точнотак же, как при использовании BinaryFormatter.Serialize ().Проблема в том, что член Data может быть очень большим, и я (как вызывающая сторона), в свою очередь, получаю его из файлового потока.Я не хочу сначала создавать экземпляр класса в памяти, читая все данные из файла, а затем сериализовать его снова, чтобы вызвать веб-сервис.Вместо этого я предполагаю использовать что-то похожее на BinaryWriter, но поддерживающее что-то вроде этого псевдокода:
var w = new MagicBinaryWriter(myOutputStreamToPost);
w.BeginObject(typeof(Test));
w.WriteString("some string");
w.WriteByteArray(myFileStream);
w.EndObject();
Стоит отметить, что это код, который будет работать на сервере, потенциально с множеством одновременных пользователей этой функцииВот почему я хочу избежать хранения всех данных в памяти.
Я искал, так сказать, низкоуровневые интерфейсы «строительных блоков», предпочтительно те, которые использует сам BinaryFormatter.Serialize (),но без удачи.Они существуют?Или, по крайней мере, очень точные спецификации о том, как выглядит формат сериализации .NET, чтобы я мог свернуть свой собственный?