我正在对投标进行技术响应,其中一个要求是在窄带宽网络(每秒10字节左右)使用可扩展格式传递消息。为了让服务器上的生活变得简单,我将使用Xml从1000个设备接收信息。为了帮助解决带宽问题,我可以使用压缩的Xml,但是数据来自嵌入式设备,可能没有omph来进行压缩。任何人都有更好的想法,一个理想将是一个小的可扩展格式,一旦收到窄带信息,可能会被误解为Xml。窄带可扩展消息格式
3
A
回答
4
协议缓冲器处于高效而可扩展的格式编码的结构化数据的方法。谷歌几乎所有的内部RPC协议和文件格式都使用Protocol Buffers。
0
YAML是非常简洁的格式,非常适合在设备之间传递序列化信息。大多数编程语言都有可用的库,所以服务器可能直接理解它,并且不需要转换为XML。
0
一些更多的信息是有用的。如上所述,答案可能是ASCII。你是否在考虑传送号码,花车,学位,名字?也许像ASN.1这样更深奥的东西。或者你可以完全发疯,就像其他建议一样。
0
与其他人一样,谷歌协议缓冲区或Apache Thrift是非常受欢迎的二进制序列化工具。也就是说,他们确实有一些开销,因为他们标记每个字段(以便在更改模式时实现有限的向后/向前兼容形式)。
Apache Avro不会做这样的标记,因此会为您节省更多的空间。
0
通常,使用XML不会让服务器的生活更轻松。如果使用XML的任何“功能”(名称空间,实体,转义,国际化等),则XML解析代码是复杂的,解析XML通常比解析其他格式(如JSON)要慢。您可以在一页代码中编写简单的JSON编码器/解码器,而XML甚至YAML将需要更多的复杂性。 Avro和Thrift以及Google协议缓冲区都是不错的选择,尽管您会增加对依赖关系的占用空间。
如果你真的限制在10字节/秒,那么你可能会想要一个没有大量引用或语法的编码;一个手工制作的带有长度前缀的协议,或者类似protobuf的二进制编码,可能就是你想要的。
相关问题
- 1. Safari扩展 - 消息
- 2. 带格式命令的参数扩展
- 3. Chrome扩展消息超时
- 4. Safari扩展消息传递
- 5. Django扩展错误消息
- 6. Laravel扩展规则消息
- 7. Chrome扩展消息帮助
- 8. TableView Chat扩展消息
- 9. 罗斯林中的可扩展格式?
- 10. 使文件格式可扩展
- 11. 消息框格式
- 12. 消息为Chrome扩展传递变量
- 13. Safari浏览器扩展消息injected.js
- 14. WCF绑定扩展的消息压缩
- 15. 扩展错误消息变量
- 16. (消息传递)队列如何扩展?
- 17. 故障扩展事件日志消息
- 18. Laravel扩展验证自定义消息
- 19. Chrome扩展:从background.js消息content.js
- 20. 本地消息响应扩展铬
- 21. 需要帮助扩展错误消息
- 22. 使用扩展WM_CHAR消息的间谍
- 23. 通过本地消息从Chrome扩展接收消息
- 24. jQuery可扩展表格行
- 25. 使用格式Java扩展
- 26. 用于可扩展即时消息应用的技术栈
- 27. 如何为Joomla扩展程序创建消息“更新可用”?
- 28. 可扩展性Blazeds | 3000条消息| 1分
- 29. 带负载平衡扩展的OSGi扩展模式
- 30. 可扩展的MySQL数据库用于邮件式消息传递
还有一个.net版本 - http://code.google.com/p/protobuf-net/正是我需要的 - 干杯 – MrTelly 2009-07-13 04:48:25