Я предвзят (как автор), но protobuf-net будет отличным решением здесь:
- двоичный, эффективный (как процессор, так и пропускная способность) формат
- очень устойчив к версии
- кроссплатформенный (protobuf)
В частности, SerializeWithLengthPrefix
и DeserializeWithLengthPrefix
(и т. Д.) Хорошо подходят для использования сокетов, так как это обрабатывает сегментацию сообщений для вас. Если вы хотите, вы также можете использовать вариант здесь (и неуниверсальный API) для отправки любого из диапазона сообщений и заставить его распознавать тип сообщения на основе заранее определенного числа, о котором вы думаете .
Таким образом, библиотека делает все возможное, чтобы доставить объект на провод. Единственным камнем преткновения является ваше определение «любого сериализуемого объекта» - если клиент / сервер согласен с типами задействованных сообщений, все будет хорошо - но «любой» немного сложнее.
Если у вас есть пример модели (она не обязательно должна быть вашей «реальной» моделью), не стесняйтесь добавлять ее, и я покажу, как ее можно использовать таким образом.