Bu sorunun bu noktada biraz tarihli olduğunu biliyorum ... Bence istemci / sunucu ortamınızın nasıl göründüğüne bağlı olduğunu belirtmek çok önemli.
Baytları denetlemeden, ileti kuyruk sistemi veya akış günlük girişleri gibi diske birden çok kez geçiriyorsanız, kompakt boyutu vurgulamak için ikili kodlamayı tercih edebilirsiniz. Aksi takdirde, farklı ortamlarda durumdan duruma göre bir sorundur.
Bazı ortamlar msgpack / protobuf'lara çok hızlı serileştirme ve serileştirme yapabilir, diğerleri çok fazla değil. Genel olarak, dil / ortam ne kadar düşük düzeyde olursa, ikili serileştirme o kadar iyi çalışır. Daha üst düzey dillerde (node.js, .Net, JVM) genellikle JSON serileştirmesinin gerçekten daha hızlı olduğunu görürsünüz. O zaman soru şu olur: Ağınız bellek / CPU'nuzdan daha fazla mı yoksa daha az mı kısıtlanıyor?
Msgpack vs bson vs protokol arabellekleri ile ilgili olarak ... msgpack grubun en az baytıdır, protokol arabellekleri yaklaşık aynıdır. BSON, diğer ikisinden daha geniş yerel türleri tanımlar ve nesne modunuzla daha iyi eşleşebilir, ancak bu onu daha ayrıntılı hale getirir. Protokol arabellekleri, ikili aktarım / depolama formatı için daha doğal bir format haline getirecek şekilde akış için tasarlanma avantajına sahiptir.
Kişisel olarak, daha hafif trafiğe açık bir ihtiyaç olmadıkça, JSON'un doğrudan sunduğu şeffaflığa yönelirim. Gzip veri içeren HTTP üzerinden, ağ ek yükündeki fark, formatlar arasında daha az sorun yaratır.