Просмотр полной версии : И снова про протокол клиент-сервер
mikhailk
11.06.2010, 17:12
Cейчас как раз запускаем в производство очередное приложение, нужно, чтобы кто-нибудь развеял мои сомнения. Планирую целиком работать через XMLSocket (cокет-сервер на java), при этом в качестве самого протокола меня бы очень устроил xml.
Я прочитал общее и единодушное мнение, что быстрее работает бинарный протокол через просто Socket, но мне крайне важна гибкость. По сложившейся практике приложение будет после сборки доводиться напильником и приобретать новые качественные черты, которые очевидно потребуют передачи новых данных.
Собственно вопрос в следующем. Близкой заменой xml является json. Задача парсинга json на стороне клиента решена, на стороне сервера тоже проблем не вижу. С учетом характера передаваемой информации (в основном это целые небольшие числа) получу экономию трафика где-то раза в полтора.
Имеет ли смысл с этим заморачиваться или реального выигрыша по сравнению с xml я все равно не почувствую?
membrilius
11.06.2010, 21:29
Вообще JSON побыстрее будет, но это от ситуации тоже.
Хотя я больше люблю старый добрый XML, хоть и громозкий зато не надо ставить дополнительные библиотеки.
Просто XML это уже стандарт. А JSON, может более удобный и читаемый, но как-то не по душе.
вообщем если по критериям то:
Вид:
XML:
<root>
<time>20:22</time>
<date>
<day>11</day>
<month>06</month>
<year>2010</year>
</date>
</root>
JSON:
{
"time" : "20:22",
"date" : {
"day" : "11",
"month" : "06",
"year" : "2010"
}
}
Объем меньше, отправляется быстрей.
На клиенте просто преобразовываем ответ в объект и работаем с ним.
В PHP вообще есть функции преобразователи, можно легко преобразовать массив в строку JSON. Но с XML тоже проблем нет.
Ну и читаемость у JSON получше. Хотя тоже дело привычки.
Psycho Tiger
11.06.2010, 21:32
Я использую почти всегда исключительно JSON, мои коллеги в офисе - XML. Оба варианта хороши, можно даже сказать почти идентичны. Используйте то, что вам проще.
Мне кажется 1.5 раза не решают. Но XMLSocket - не нужен, можно сделать обычный и гонять по нему xml в крайнем случае. Вродь и бинарный протокол не то чтоб проблема сделать гибким.
mikhailk
12.06.2010, 00:53
так наверное, если xml гонять, то какой смысл отказываться от XMLSocket и эмулировать в итоге его своим классом поверх обычного сокета?
Под бинарным протоколом я понимаю фиксированный набор пакетов с жесткой структурой, в которых описательная информация отсутствует, поскольку она не нужна - на передающей и принимающей стороне есть соответствующие обработчики этих пакетов (по одному на каждый тип, либо универсальные). И если у нас появляется необходимость передавать новую информацию, то нам надо править эти самые обработчики, иначе пакет будет либо неправильно обработан, либо вообще не принят в обработку. В распределенной системе получаем хорошую головную боль и/или радостный зоопарк.
Или мы о разном говорим?
В остальном - видимо, действительно, если удобно xml'ем, то то так и надо делать.
Dimitry_II
12.06.2010, 01:13
Да ну ...
И передача быстрее, и парсинг быстрее, и с объектом значительно удобнее работать, чем парсить хмл.
Делал на json, мне xml не нравится в принципе.
А вобще лучше RemoteObject через AMF - и вовсе "пестня" ... до сих пор от восторга отойти не могу.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.