У кого-либо есть информация о рабочих характеристиках Буферов Протокола по сравнению с BSON (двоичный JSON) или по сравнению с JSON в целом?
Они походят на хорошие протоколы двоичной синхронной передачи данных для использования по HTTP. Я просто задаюсь вопросом, который был бы лучше в конечном счете для среды C#.
Вот некоторая информация, которую я читал на Буферах Протокола и BSON.
Thrift также является альтернативой буферам протоколов.
Есть хорошие тесты от сообщества Java по сериализации/десериализации и размеру проводов этих технологий: https://github.com/eishay/jvm-serializers/wiki
В целом, JSON имеет немного больший размер проводов и немного худший DeSer, но выигрывает в повсеместности и возможность легко интерпретировать его без IDL-источника. Последний момент - это то, что Apache Avro пытается решить, и он бьет и то, и другое с точки зрения производительности.
Microsoft выпустила пакет C# NuGet Microsoft.Hadoop.Avro.
.буферы протокола предназначены для проводов:
JSON - это просто текст и он должен быть обработан. подсказка: кодирование "миллиардного" int в него займет довольно много символов: Billion = 12 char's (длинный масштаб), в двоичном варианте он помещается в uint32_t Теперь, как насчет попытки кодировать двойной ? это было бы хуже FAR.
В этой записи сравниваются скорости сериализации и размеры в .NET, включая JSON, BSON и XML.
http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx
Вот несколько недавних тестов , показывающих производительность популярных сериализаторов .NET.
Тесты Burning Monks показывают производительность сериализации простого POCO, в то время как комплексные тесты Northwind показывают объединенные результаты сериализации строки в каждой таблице набора данных Microsoft's Northwind.
Обычно буферы протокола ( protobuf-net ) примерно на 7x быстрее, чем самый быстрый сериализатор библиотеки базовых классов в .NET (XML DataContractSerializer). Он также меньше, чем у конкурентов, поскольку он также на 2,2x меньше, чем самый компактный формат сериализации Microsoft (JsonDataContractSerializer).
Сериализаторы текста ServiceStack наиболее близки к производительности двоичного protobuf-net, где его Json Serializer всего на 2,58x медленнее, чем protobuf-net.