Лучший способ связи Flex с PHP?

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

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

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

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

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

12 ответов


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

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

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


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 выше, вы, вероятно, знаете, почему это больше не на моем радаре.


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

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

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

user/10
review/15
location/8/reviews

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


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

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


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

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


эта ссылка представляет собой скринкаст, показывающий, как использовать WebORB для PHP WDMF (Weborb Data Management for Flex).

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


во всех проектах, связанных с Flash и PHP, я работал с запросами AMFPHP или XML.

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

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

Если вы хотите 100% будущей "поддержки", то я бы рекомендовал то, что вообще не нуждается в поддержке: XML.


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

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


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

взгляните на это видеоуроки для генерации Actionscript с PHP это довольно маскарадный.

Ура.


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

недостаток--это не так компактно, как AMF, но это ничего, что сжатие gzip не может справиться.


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

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


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

и если вы хотите быструю, эффективную и обобщенную связь, идите с json. Затем ваш веб-сервис будет доступен для flash, ajax или обычных http-запросов.