窄带可扩展消息格式

时间:2009-07-09 12:59:38

标签: xml embedded compression

我正在对招标进行技术响应,其中一个要求是在窄带宽网络上使用可扩展格式传递消息(10个字节/秒左右)。为了让服务器上的生活更轻松,我将使用Xml从1000个设备接收信息。为了解决带宽问题,我可以使用压缩的Xml,但数据来自嵌入式设备,可能没有omph可以动态进行压缩。任何人都有更好的想法,理想的是一种可扩展的小格式,一旦通过窄带接收到消息,就可以将其缩小为Xml。

5 个答案:

答案 0 :(得分:4)

Google Protocol Buffers

  

协议缓冲区是一种以高效且可扩展的格式编码结构化数据的方法。 Google对几乎所有内部​​RPC协议和文件格式都使用Protocol Buffers。

答案 1 :(得分:0)

YAML是一种非常简洁的格式,非常适合在设备之间传递序列化信息。大多数编程语言都有可用的库,因此服务器可能直接理解它,并且不需要转换为XML。

答案 2 :(得分:0)

更多信息会很有用。如上所述,答案可能是ASCII。你想传输数字,花车,学位,名字吗?也许像ASN.1那样更深奥。或者你可以像其他建议一样疯狂。

答案 3 :(得分:0)

像其他人所说的那样,Google Protocol Buffers或Apache Thrift是非常流行的二进制序列化工具。也就是说,它们确实有一些开销,因为它们标记每个字段(在更改模式时实现有限形式的向后/向前兼容性)。

Apache Avro不进行标记,因此会为您节省更多空间。

答案 4 :(得分:0)

通常,您不会通过使用XML来简化服务器的生活。如果使用XML的任何“特性”(命名空间,实体,转义,国际化等),XML解析代码很复杂,而解析XML通常比解析其他格式(如JSON)要慢。您可以在代码页中编写一个简单的JSON编码器/解码器,而XML甚至YAML将需要更多的复杂性。 Avro和Thrift以及Google Protocol Buffers是不错的选择,尽管你会增加你的依赖足迹。

如果你真的被限制在10个字节/秒,那么你可能想要一个没有很多引用或语法的编码;一个手工制作的长度前缀协议,或类似protobuf的二进制编码,可能就是你想要的。