我应该使用XML还是Binary将数据从服务器发送到客户端?

Lia*_*iao 5 c# c++ xml

我有两个独立的应用程序 - 一个是客户端(在C#中),一个是服务器(在C++中).他们需要以"结构"的形式交换数据,并且每分钟大约1 MB的数据从服务器发送到客户端.

什么更好用 - XML或我自己的二进制格式?

使用XML:

  • 我相信使用解析器将XML转换为结构会很慢吗?("好",但是:加载解析器,加载XML,解析)
  • 另一个选择是使用正则表达式解析XML(糟糕!)

二进制:

  • 紧凑的数据大小
  • 不需要像标签这样的元信息;
  • 但结构不能轻易改变,以适应未来结构中的新结构/新成员;
  • 没有必要从文本(XML)转换为二进制(struct),因此接收和"汇编"到结构中的速度更快

有什么指针吗?我根本不应该考虑二进制吗?对于采取何种方法有点困惑.

Jon*_*eet 7

如果你有一个合理的网络连接,每分钟1MB的数据是非常小的.

二进制和XML之间还有其他选择 - 其他人类可读的文本序列化格式,例如JSON.

当涉及到二进制,你不要已经版本问题-技术,如Protocol Buffers的(我有偏见:我为谷歌工作,我已经移植到PB C# )明确设计时考虑了向前和向后兼容性.还有其他二进制格式需要考虑,例如Thrift.

如果你担心性能,你应该真的测量它.我很确定我的手机可以足够快地解析1MB的XML,因为在这种情况下它不会成为问题...基本上可以解决你最关心的问题:

  • 简单的代码
  • 互通性
  • 在CPU方面的表现
  • 网络流量
  • 向后/向前兼容性
  • 在线格式的人类可读性

这都是一种平衡行为 - 但你必须决定给予每个因素多少重量.