Какой лучший способ получить данные в моем приложении Flex? - PullRequest
0 голосов
/ 30 ноября 2011

Я новичок в разработке Flex, при создании нового проекта для мобильных устройств меня спрашивает, хочу ли я подключить его к некоторым серверам, и мне предлагаются четыре варианта: «ColdFusion, PHP, Java и blazeDS).

Я все время работал в Java, а не в PHP, я бы просто выбрал Java и проигнорировал все остальные. Но так как эффективность - важная проблема в моем текущем проекте, я не хочу рисковать.

По вашему мнению Какой из них является лучшим вариантом, например ColdFusion, BlazeDS или Java, учитывая тот факт, что большую часть времени я буду хранить большие двоичные данные в базе данных, например, аудио / видео файлы и т. Д .?

Ответы [ 2 ]

7 голосов
/ 30 ноября 2011

Поскольку вы парень из Java, вы можете сразу отказаться от опции PHP: ее параметры удаленного взаимодействия AMF работают медленнее, чем у других 3, и вы не хотите изучать новый язык.

Это оставляет нам Java, CF и BlazeDS, которые в основном являются разновидностями Java и с точки зрения производительности они могут быть довольно похожими (при правильном использовании: см. Далее):

  • Java: самый базовый вариант; Я считаю, что это самый быстрый вариант для удаленного взаимодействия AMF; плюс вы знаете язык
  • BlazeDS: на самом деле это серверное приложение Java, которое позволяет отправлять сообщения клиенту; так что вы также можете писать на Java; но если вам не требуется дополнительная функциональность, не беспокойтесь
  • ColdFusion: «уровень продуктивности» поверх Java: нравится ли вам язык, решать вам (лично я не большой поклонник). Вам нужно будет настроить сервер ColdFusion. Хотя версия CF-сервера для разработчиков является бесплатной, коммерческая версия очень дорога (если вы не используете Railo или BlueDragon).

Но есть одна вещь, которую вам нужно знать. Инстанцирование в CF ужасно дорого - я имею в виду в 500 раз медленнее, чем в Java - поэтому, если у вас большие списки, это определенно ноно. Если вы не используете трюк, с которым я столкнулся несколько месяцев назад: вместо создания объекта вы должны создать «struct» и присвоить ему атрибут «__type__».

пример, вместо:

var instance = new path.to.MyClass();
//or
var instance = createObject("component", "path.to.MyClass");

сделать это так:

var instance = structNew();
instance["__type__"] = "path.to.MyClass";

и ColdFusion будет таким же быстрым или, может быть, даже немного быстрее, чем Java.

У меня есть несколько ориентиров, подтверждающих это. Это изображение представляет собой сравнение того, сколько времени требуется для создания 50000 экземпляров на некоторых языках. (На самом деле я пытался сказать своему боссу, насколько дерьмовой CF на самом деле.) И CF8 (не в таблице) даже в 100 раз медленнее.

enter image description here

Затем я добавил сериализацию AMF и типизированную структуру (как описано ранее) в список, и вот результат:

enter image description here

Некоторые имена столбцов были потеряны в графике, но второй столбец слева - это опция чисто Java. Таким образом, при таком подходе CF9, кажется, на самом деле быстрее, чем Java.

1 голос
/ 30 ноября 2011

Я занимаюсь Flex -> ColdFusion в течение нескольких лет, и, хотя я иногда разочаровываюсь в кодировании ColdFusion, он отлично подходит для работы с серверной частью приложений Flex.Тем не менее, я также использую BlazeDS с ColdFusion и Flex для поддержки (push) обмена сообщениями в паре клиентов.

В конечном счете, я думаю, что ColdFusion (особенно с сервером CFML с открытым исходным кодом, Railo) является фантастическим бэкендом (т. Е. Поставщиком данных) для приложений Flex.

...