繁体   English   中英

Google协议缓冲区与JSON:C ++至C#的通信

[英]Google Protocol Buffers Vs JSON: C++ to C# communication

我有两个通过TCP套接字进行通信的应用程序。 目前,这些应用程序都是本地的,但将来,服务器应用程序将在云上运行(Amazon EC2实例)。

服务器应用程序用C++编写。客户端应用程序用C#编写。

我正在从服务器向客户端发送具有以下属性的对象:

Guid Id
uint8* ImageData

虽然,我不妨在将来添加额外的属性。 但是,由于延迟在这里很重要,因此我将尽量减少该对象。

现在,我目前正在使用JSON在程序之间进行通信,但是我想知道Google协议缓冲区(GPB)是因为JSON非常好用,并且易于使用,而且易于阅读,而且确实存在较大的开销,并且事物的外观,导致通信中的明显延迟。

我正在寻找的是一种在客户端和服务器应用程序之间进行通信的更有效的方法。

GPB与JSON的比较如何? 有没有人对GPB的高性能使用有任何经验? 还有其他更适合的协议吗?

这些参考资料将为您提供帮助。

https://google.github.io/flatbuffers/md__benchmarks.html

https://capnproto.org/news/2014-06-17-capnproto-flatbuffers-sbe.html

github上有一个用于将JSON转换为protobuf的C ++实现。

我们不知道很多事情:

  • uint8* ImageData通常有多大?
  • 您如何将二进制数据序列化为JSON
  • 可用带宽是多少
  • 平均和预期数据速率是多少

我要说的是,仅在重要时才需要担心JSON开销,否则为什么要更改任何东西。 您提到了延迟,但是只有当您要发送的数据多于可用带宽时,延迟才会受到影响。

对于您的极其简单的情况,我什至不使用JSON,而是手动将其序列化为二进制blob,除非您期望将来您的协议会显着发展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM