Ответ XML или JSON для приложений Flex с бэкэндом PHP? - PullRequest
1 голос
/ 18 июля 2011

Я разрабатываю приложение Floorplanner Flex mini. Мне было просто интересно, будет ли JSON или XML лучшим выбором с точки зрения производительности при генерировании ответов из PHP. В настоящее время я склоняюсь к JSON, так как ответы также могут быть повторно использованы для Javascript. Я читал в другом месте, что анализ JSON занимает больше времени, чем XML, это правда? Как насчет гибкости при обработке данных с XML против JSON во Flex?

Ответы [ 5 ]

3 голосов
/ 31 августа 2011

Я бы пошел с JSON.Мы добавили встроенную поддержку JSON в Flash Player, поэтому он будет так же быстр на стороне синтаксического анализа, как и XML, и гораздо менее многословен / меньше.

= Ryan ryan@adobe.com

1 голос
/ 18 июля 2011

JSON не является нативной структурой для Flex (странно, да? Вы могли бы подумать, что объекты {} могут быть легко сериализованы, но не совсем), как XML.Это означает, что виртуальная машина выполняет XML за кулисами, в то время как строки JSON анализируются и превращаются в объекты посредством манипулирования строками (даже если вы используете AS3CoreLib) ... брутто ... Лично я также видел несоответствияв JSONEncoder (когда-то Массивы были просто индексированными объектами).

Как только данные были преобразованы в объект AS3, поиск и анализ данных в XML все же происходит быстрее, чем с объектами.Выражения XPath делают обход данных приятным (почти достаточно легким, чтобы заставить вас улыбаться по сравнению с другими вещами).

С другой стороны, JS намного лучше разбирает JSON.НАМНОГО, НАМНОГО ЛУЧШЕ.Но, поскольку переход на JavaScript - это «возможно ... когда-нибудь ...», то вы можете подумать: «Будет ли использование JSON в будущем стоить снижения производительности прямо сейчас?»

Но вотвопрос, почему бы просто не иметь два выхода?Поскольку и JS, и AS могут предоставить вам POST с практически произвольным числом переменных, вам действительно нужно только позаботиться о том, как сервер отправляет данные, а не получает их.Вот потенциальный способ справиться с этим:

 // as you are about to output:
 $type = './outputs/' . $_GET[ 'type' ] . '.php';
 if( file_exists( $type ) && strpos( $type, '.', 1 ) === FALSE )
 {
     include( $type );
     echo output_data( $data );
 }
 else
 {
     // add a 404 if you like 
     die();
 }

Затем, при получении $ _GET ['type'] == 'js', js.php будет:

 function output_data( $data ){ return json_encode( $data ); }

При получении $ _GET ['type'] == 'xml' xml.php будет содержать что-то, у которого output_data вернет строку, представляющую XML (множество примеров здесь )

Конечно, если вы используете фреймворк, то вместо этого вы можете просто сделать что-то подобное с представлением (мое предложение сводится к тому, что «вы должны иметь два разных представления и использовать MVC»).

0 голосов
/ 18 июля 2011

Время загрузки:

JSON быстрее.

Разбор JavaScript

JSON быстрее

Actionscript Parse

XML быстрее.

Расширенное использование в Actionscript

XML лучше со всеми функциями E4X. JSON ограничен и не знает векторов, что означает, что вы ограничены массивами или вам нужно переопределить JSON Encoder в ascorelib чем-то вроде

else if ( value is Vector.<*> ) {
    // converts the vector to an array and
    return arrayToString( vectorToArray( value ) );
} else if ( value is Object && value != null ) {



private function vectorToArray(__vector:Object):Array {
    var __return    : Array;
    var __vList     : Vector.<*>;

    __return = new Array;

    if ( !__vector || !(__vector is Vector.<*>) )
    {
        return __return;
    }

    for each ( var __obj:* in (__vector as Vector.<*>) )
    {
        __return.push(__obj);
    }

    return __return;
}

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

Итак, какой из них зависит от того, насколько продвинутыми будут ваши объекты, которые вы собираетесь перемещать. Более продвинутые, используйте XML, чтобы упростить ActionScript. Простые вещи идут JSON

0 голосов
/ 18 июля 2011

Если вы когда-нибудь собираетесь использовать с ним Javascript, определенно используйте JSON.Оба имеют очень красивую структуру.

Это зависит от того, насколько хорошо Flex может анализировать JSON, поэтому я хотел бы рассмотреть это.Сколько данных вы собираетесь передавать обратно?Сообщения об ошибках / успехах?Профили пользователей?Какие данные это будет содержать?

Потребуются ли атрибуты для тегов?Или просто «структура».Если ему нужны атрибуты и тому подобное, и вы не хотите слишком углубляться в структуру типа «массив», переходите к XML.

Если вы просто хотите получить ключ => значение,даже многомерный ... идите с JSON.

Все зависит от того, какие данные вы собираетесь передавать взад и вперед.Это примет ваше решение:)

0 голосов
/ 18 июля 2011

Нет, JSON ВСЕГДА меньше XML, когда их структуры полностью одинаковы. И стоимость синтаксического анализа текста почти соответствует размеру целевого текста.

Итак, JSON быстрее XML, и если у вас есть план по их повторному использованию на стороне javascript, выберите JSON.

Сравнительный тест JSON против XML: http://www.navioo.com/ajax/ajax_json_xml_Benchmarking.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...