Does anyone have any information on the performance characteristics of Protocol Buffers versus BSON (binary JSON) or versus JSON in general?
These seem like good binary protocols for use over HTTP. I'm just wondering which would be better in the long run for a C# environment.
Here's some info that I was reading on BSON and Protocol Buffers.
Thrift is another Protocol Buffers-like alternative as well.
There are good benchmarks from the Java community on serialization/deserialization and wire size of these technologies: https://github.com/eishay/jvm-serializers/wiki
In general, JSON has slightly larger wire size and slightly worse DeSer, but wins in ubiquity and the ability to interpret it easily without the source IDL. The last point is something that Apache Avro is trying to solve, and it beats both in terms of performance.
Microsoft has released a C# NuGet package Microsoft.Hadoop.Avro.