Лучший способ для связи Flex с PHP? - PullRequest
8 голосов
/ 16 марта 2009

Каков наилучший способ связи между Flex и PHP?

В прошлом мы использовали AMFPHP с AS2, и в большинстве случаев он работал отлично (преимущество AMFPHP заключается в том, что он также имеет режим JSON, который позволяет беспрепятственно использовать один и тот же удаленный PHP с интерфейсами Javascript или Actionscript) .

Однако, похоже, что AMFPHP больше не поддерживается. Так что люди рекомендуют заменить его? Пока что я нашел:

  1. Zend_AMF (выглядит слишком сложным для нас, в противном случае мы не используем инфраструктуру Zend)
  2. AMFPHP (были сделаны некоторые обновления для поддержки Flex, и он кажется довольно стабильным, но не уверен в долгосрочной поддержке)
  3. XML (AS3 имеет отличные процедуры обработки XML, но это больше проблем на стороне PHP)
  4. WebORB (у меня нет с этим опыта)
  5. Roll-Our-own с использованием JSON или другой системы сериализации данных в текст (php's serialize (), XML и т. Д. И т. Д.)

В основном я склоняюсь к AMFPHP, даже из-за недостатков, поскольку к этому я привык. По какой-то причине мне стоит подумать о переходе на что-то еще?

Ответы [ 12 ]

8 голосов
/ 19 марта 2009

Если вы хотите иметь быструю и эффективную связь, я настоятельно рекомендую придерживаться протокола AMF вместо пользовательского формата REST или JSON.

ZendAMF на самом деле не очень запутан. Посмотрите вводное руководство по GotoAndLearn , это довольно просто.

И, как вы знаете, некоторые разработчики из AMFPHP перешли на работу над ZendAMF. В некотором смысле ZendAMF является продолжением AMFPHP.

2 голосов
/ 19 марта 2009

ZendAMF Хорошее короткое чтение - http://theflashblog.com/?p=441

Для меня это ежу понятно. Zend Framework является одним из лучших php-фреймворков, и теперь вы можете общаться с Flash-клиентами. Завершите это поддержкой Adobe, в моей книге это сделка.

Альтернативы:

WebORB для php http://www.themidnightcoders.com/products/weborb-for-php

AMFPHP http://www.amfphp.com Если вы прочтете указанный выше URL, вы, вероятно, узнаете, почему его больше нет на моем радаре.

1 голос
/ 18 марта 2010

Эта ссылка представляет собой скриншот, показывающий, как использовать WebORB для PHP WDMF (Управление данными WebORB для Flex).

http://www.themidnightcoders.com/products/weborb-for-php/developer-den/screencasts/weborb-data-management-for-flex-and-php.html

1 голос
/ 23 марта 2009

Вам следует рассмотреть возможность использования Zend AMF. Zend Framework спроектирован так, чтобы быть фреймворком выбора, поэтому можно выбрать один компонент (в данном случае Zend AMF) для вашего приложения.

Zend AMF чрезвычайно прост в использовании. Все, что вам нужно сделать, это указать функции / классы, которые вы хотите предоставить, и указать сопоставление классов вашим классам сценариев действий. Все остальное в значительной степени прозрачно.

1 голос
/ 20 марта 2009

Если вы не используете фреймворк, такой как Zend, обычный AMFPHP все еще хорош, если только по какой-то другой причине он прост. Я думаю, если вы чувствуете себя комфортно с этим, почему бы не пойти на это? Суть роли этих интерфейсов AMF в том, что им действительно не нужно делать слишком много, и что AMFPHP имеет в отображении классов, разборе набора записей в ArrayCollection, отличной производительности ... это даже хорошо с XML, так как это сжимается. Сервисный браузер в сочетании с Чарльзом накрыл и меня.

Мне не удалось понять, как усилия ZendAMF связаны с оригинальным AMFPHP. Хотя я могу копать, я просто говорю, что, следуя списку рассылки AMFPHP на Nabble, читая блог Уэйда Арнольда ... это просто не совсем понятно.

1 голос
/ 17 марта 2009

Я не могу сказать вам, что лучше (потому что в любом случае это, вероятно, несколько субъективно), но я могу рассказать вам о моем недавнем проекте.

Поскольку это было очень богатое веб-приложение, и запросы данных к серверу были бы частыми, я хотел убедиться, что размер запросов был как можно меньше. Это означает выбор JSON в качестве формата.

Далее, из-за природы приложения и того факта, что мои разработчики флеш / флекс были за 1000 миль, мне понадобился API, который был бы простым и без состояния. В конечном итоге это привело нас к HTTP + REST.

Итак, коммуникационный уровень моего приложения представляет собой простой набор ресурсов REST на основе Zend Framework с такими URI, как

user/10
review/15
location/8/reviews

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

0 голосов
/ 30 марта 2011

AMF имеет довольно ситуативное преимущество. Если вы хотите передать большой и сложный объект, обязательно используйте AMF. Но мало кто знает о накладных расходах, которые несет AMF при передаче небольших объектов. Если вы передаете объект только с 3 свойствами, использование AMF может утроить размер полезной нагрузки.

Кстати, я большой сторонник архитектуры RESTful. Поскольку JSON и AMF являются просто представлениями, вы можете создать службу REST, которая принимает оба, и согласовать фактическое представление с вашим клиентом во время выполнения.

0 голосов
/ 25 марта 2009

PHP имеет довольно хорошую функцию serialize(), поэтому для недавнего проекта, который я сделал (высокие оценки для игры), я использовал Sephiroth Serializer . Это делает сериализацию на стороне Flash почти такой же простой, как и в PHP. Serializer также работает с типами данных (в отличие от json / xml), такими как AMF.

Недостаток - он не такой компактный, как AMF, но с этим gzip-сжатие не справится.

0 голосов
/ 23 марта 2009

Я бы определенно пошел на WebORB. Я использовал его с .NET на предыдущей работе, и мне было приятно писать с ней. Его простота использования и продуманная консоль управления делают его очень быстрым в изучении, а его документация очень полной; Я знаю, что заманчиво остаться с AMF только потому, что это то, что вы уже знаете, но я считаю, что стоит попробовать WebORB.

Посмотрите на эту скринкаст для генерации Actionscript с помощью PHP, это довольно необычно.

Приветствие.

0 голосов
/ 20 марта 2009

XML на PHP может быть намного проще с SimpleXML .

Я бы просто использовал JSON в качестве ваших возвратов для простых вызовов против вашего PHP API.

...