我正在对招标进行技术响应,其中一个要求是在窄带宽网络上使用可扩展格式传递消息(10个字节/秒左右)。为了让服务器上的生活更轻松,我将使用Xml从1000个设备接收信息。为了解决带宽问题,我可以使用压缩的Xml,但数据来自嵌入式设备,可能没有omph可以动态进行压缩。任何人都有更好的想法,理想的是一种可扩展的小格式,一旦通过窄带接收到消息,就可以将其缩小为Xml。
答案 0 :(得分:4)
协议缓冲区是一种以高效且可扩展的格式编码结构化数据的方法。 Google对几乎所有内部RPC协议和文件格式都使用Protocol Buffers。
答案 1 :(得分:0)
YAML是一种非常简洁的格式,非常适合在设备之间传递序列化信息。大多数编程语言都有可用的库,因此服务器可能直接理解它,并且不需要转换为XML。
答案 2 :(得分:0)
更多信息会很有用。如上所述,答案可能是ASCII。你想传输数字,花车,学位,名字吗?也许像ASN.1那样更深奥。或者你可以像其他建议一样疯狂。
答案 3 :(得分:0)
Apache Avro不进行标记,因此会为您节省更多空间。
答案 4 :(得分:0)
通常,您不会通过使用XML来简化服务器的生活。如果使用XML的任何“特性”(命名空间,实体,转义,国际化等),XML解析代码很复杂,而解析XML通常比解析其他格式(如JSON)要慢。您可以在代码页中编写一个简单的JSON编码器/解码器,而XML甚至YAML将需要更多的复杂性。 Avro和Thrift以及Google Protocol Buffers是不错的选择,尽管你会增加你的依赖足迹。
如果你真的被限制在10个字节/秒,那么你可能想要一个没有很多引用或语法的编码;一个手工制作的长度前缀协议,或类似protobuf的二进制编码,可能就是你想要的。