2009-09-04 6 views
2

Мне хотелось бы узнать, какой формат использовать для передачи данных через TCP. В настоящее время я разработал простой текстовый протокол с разделительными строками. Я думаю, что я должен использовать что-то там, которое уже существует, такое как XML, JSON или XMPP?Какой формат для передачи данных через TCP?

Какие форматы данных используются людьми для передачи по TCP?

Я бы хотел оптимизировать скорость и пропускную способность, но предпочел бы использовать существующий стандарт, чем использовать свои собственные.

+2

Какие данные вы передаете? –

+0

Его основной текст - в основном карты, например. Name-> Nosrama, Country-> US, ID-> 2343 ... – Nosrama

ответ

0

В большинстве случаев люди просто объявляют запись с макетом, который воспроизводится на обоих концах и использует это. Только когда у вас есть более сложные потребности, вам нужно сделать что-нибудь более интересное.

Для переменных строк длины я бы, скорее всего, реализовал их как последовательность длин, а затем длину байтов данных. В языках Cish вы, вероятно, могли бы пройти без длины, используя нулевой ограничитель. Ничего сложнее, чем это действительно необходимо.

0

В зависимости от типа данных и того, кто потребляет ваши данные.

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

Если вы пишете что-то для многих потребителей, использующих различные языки ... тогда я больше беспокоюсь о XML или JSON (в зависимости от размера и сложности ваших данных).

XML более подходит для больших и сложных фрагментов данных.

JSON лучше для небольших, более компактных фрагментов данных.

+1

Можете ли вы подробнее рассказать о XML-данных больших данных, небольшом описании данных JSON? – JosefAssad

+0

Когда вы начинаете пытаться передавать большие объемы данных через JSON, это быстро становится проблематичным. Попытка взглянуть на огромный кусок JSON и проблемы с отладкой - это кошмар. XML более структурирован и легче справляется, когда вещи начинают становиться все более сложными. –

0

Ключ/значение внешнего вида данных указывает, что JSON может быть проще работать.

Оптимизация скорости и пропускной способности, вероятно, лучше обрабатывается вне вашего приложения, слои 3 и 4 в OSI model Я бы рискнул. Одна единица оптимизирующих усилий, вложенных в эти слои, вероятно, даст вам больше оптимальности, чем одна единица усилий, погруженная в структуру и кодирование ваших данных.

+0

Спасибо - можете ли вы подробнее рассказать о модели OSI? На что я должен смотреть, в частности? – Nosrama

0

XML звучит как хороший выбор для вашего типа данных - там уже много XML-библиотек (или ваш язык может даже иметь встроенный XML-синтаксический анализ).

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

Смежные вопросы