2009-07-09 3 views
3

Я собираю технический ответ к участию в торги, один из требований для передачи сообщений с использованием расширяемого формата над узкой полосой пропускания сети (10 байт/сек или около того). Чтобы сделать жизнь легкой на сервере, которая будет получать информацию от 1000-х устройств, я хотел бы использовать Xml. Чтобы решить проблему с пропускной способностью, я мог бы использовать сжатый Xml, но данные поступают от встроенных устройств, которые, возможно, не имеют omph для сжатия на лету. У кого-то были лучшие идеи, идеал был бы небольшим расширяемым форматом, который можно было бы hyrdated в Xml, как только сообщения были получены в узкой полосе.Узкополосных формат расширяемого сообщения

ответ

4

Google Protocol Buffers

протокол буфера представляют собой способ кодирования структурированных данных в эффективном еще расширяемый формат. Google использует протокольные буферы практически для всех своих внутренних протоколов RPC и форматов файлов.

+0

Существует также версия .net - http://code.google.com/p/protobuf-net/ только то, что мне нужно - приветствия – MrTelly

0

YAML является очень кратким формат идеально подходит для передачи сериализованную информации между устройствами. Существуют библиотеки, доступные для большинства языков программирования, поэтому сервер, вероятно, может понять это напрямую, и нет необходимости конвертировать в XML.

0

Некоторые больше информации было бы полезно. Как сказано, ответ может быть ASCII. Вы думали о передаче чисел, поплавков, степеней, имен? Возможно, нечто более эзотерическое, как ASN.1. Или вы могли бы сойти с ума, как и с другими предложениями.

0

Как уже говорили другие, Google протокол Буферы или Apache Бережливость очень популярны бинарные инструменты сериализации. Тем не менее, у них есть некоторые накладные расходы, потому что они отмечают каждое поле (для достижения ограниченной формы обратной/прямой совместимости при изменении схемы).

Apache Avro не делает, что мечение и сэкономит вам чуть-чуть больше места, из-за этого.

0

В общем, вы не будете делать жизнь сервера проще с помощью XML. XML-код синтаксического анализа сложный, если вы используете любые «функции» XML (пространства имен, сущности, экранирование, интернационализацию и т. Д.), А анализ XML обычно медленнее, чем анализ других форматов, таких как JSON. Вы можете написать простой кодировщик/декодер JSON на странице кода, тогда как XML и даже YAML потребуют большей сложности. Avro, Thrift и Google Protocol Buffers - хороший выбор, хотя вы будете увеличивать свою зависимость.

Если вы действительно ограничены до 10 байт/сек, то вы, вероятно, хотите кодировку, которая не имеет много цитирования и синтаксис; протокол с длинным префиксом, созданный вручную, или что-то вроде бинарного кодирования протобуфа, вероятно, то, что вы хотите.