Лучший метод для связи Flex с PHP?
Каков наилучший метод связи между Flex и PHP?
В прошлом мы использовали AMFPHP с AS2, и по большей части он отлично работал (преимущество AMFPHP в том, что он также имеет режим JSON, который позволяет легко использовать один и тот же удаленный PHP с интерфейсами Javascript или Actionscript).
Однако, похоже, что AMFPHP на самом деле больше не поддерживается. Так что же люди рекомендуют для его замены? До сих пор то, что я нашел является:
- zend_amf (зенд_амф) ( выглядит слишком сложным для нас, иначе мы не используем фреймворк Zend)
- АМФФП ( были некоторые обновления, сделанные для поддержки Flex, и они кажутся довольно стабильными, но не уверены в долгосрочной поддержке)
- XML (В AS3 есть хорошие процедуры обработки XML, но это больше похоже на боль со стороны PHP)
- Веборб ( У меня нет опыта в этом)
- Ролл-наш-собственный использование JSON или какой-либо другой системы сериализации данных в текст (сериализация php(), XML и т. Д. и т. Д.)
В основном я склоняюсь к AMFPHP, даже из-за недостатков, так как это то, к чему я привык. Есть ли причина, по которой я должен подумать о переходе на что-то другое?
12 answers
Если вы хотите иметь быструю и эффективную связь, я настоятельно рекомендую придерживаться протокола AMF вместо пользовательского формата REST или JSON.
Зендамф на самом деле не очень сбивает с толку. Посмотрите вводный урок по gotoAndLearn, это довольно просто.
И, чтобы вы знали, некоторые разработчики из AMFPHP перешли работать над ZendAMF. Так что в некотором смысле ZendAMF является продолжением AMFPHP.
Зендамф Хорошее короткое чтение - http://theflashblog.com/?p=441
Для меня это не проблема. Фреймворк Zend - один из лучших php-фреймворков, и теперь вы можете общаться с Flash-клиентами. В довершение всего с поддержкой Adobe, в моей книге это уже сделано.
Альтернативы:
WebORB для php http://www.themidnightcoders.com/products/weborb-for-php
АМФФП 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, обычный ol AMFPHP по-прежнему хорош, хотя бы по той простой причине, что он прост. Я думаю, если вы чувствуете себя комфортно с этим, почему бы не пойти на это? Дело в роли этих интерфейсов AMF заключается в том, что им действительно не нужно делать слишком много, и то, что AMFPHP имеет в сопоставлении классов, анализе наборов записей в сборке массивов, отличной производительности.... это даже хорошо работает с XML, так как он сжимается. Браузер службы в сочетании с Чарльзом имеет накрыл и меня тоже.
Я не смог понять, как усилия ZendAMF связаны с оригинальным AMFPHP. Пока я могу копать, я просто говорю об этом, следуя списку рассылки AMFPHP на Nabble, читая блог Уэйда Арнольда... это просто не совсем ясно.
Вам следует рассмотреть возможность использования Zend AMF. Платформа Zend предназначена для выбора и выбора платформы, поэтому совершенно нормально выбрать один компонент (в данном случае Zend AMF) для вашего приложения.
Zend AMF чрезвычайно прост в использовании. Все, что вам нужно сделать, это указать функции/классы, которые вы хотите предоставить, и указать сопоставление классов с вашими классами сценариев действий. Все остальное в значительной степени прозрачно.
Эта ссылка представляет собой скринкаст, показывающий, как использовать WebORB для PHP WDMF (Управление данными WebORB для Flex).
Во всех проектах, связанных с бэкендом Flash и PHP, я работал либо с запросами AMFPHP, либо с XML.
AMFPHP действительно упрощает понимание приложения для будущего обслуживания, хотя это связывает все это с этой конкретной технологией и влечет за собой некоторые дополнительные накладные расходы на стороне сервера - для создания всех необходимых классов.
Согласно XML, ну, то, что вы получаете здесь, - это стандартные веб-сервисы REST, и это не зависит от Flash (вы можете извлекать данные из например, настольное приложение, в то время как использование JSON или любой другой технологии, зависящей от браузеров, не позволяет этого).
Если вы хотите 100% будущей "поддержки", то я бы рекомендовал то, что вообще не нуждается в поддержке: XML.
XML на PHP может быть намного проще с SimpleXML.
Я бы просто использовал JSON в качестве возврата для простых вызовов вашего PHP api.
Я бы определенно выбрал WebORB. Я использовал его с.СЕТЬ на предыдущей работе у меня была, и с ней было приятно работать. Его простота в использовании и продуманная консоль управления делают его очень быстрым в освоении, а его документация очень полной; Я знаю, что заманчиво остаться с AMF только потому, что это то, что вы уже знаете, но я считаю, что стоит попробовать WebORB.
Взгляните на этот скринкаст для генерации Actionscript с помощью PHP, это довольно маскарадный.
Ваше здоровье.
PHP имеет довольно хорошую функцию serialize()
, поэтому для недавнего проекта, который я сделал (высокие баллы за игру), я использовал сериализатор Сефирота . Это делает сериализацию на стороне Flash почти такой же простой, как и в PHP. Сериализатор также имеет дело с типами данных (в отличие от json/xml), такими как AMF.
Недостаток - он не так компактен, как AMF, но это не то, с чем не может справиться сжатие gzip.
AMF имеет довольно большое ситуационное преимущество. Если вы хотите перенести большой и сложный объект, обязательно используйте AMF. Но мало кто знает о накладных расходах, которые несет AMF при передаче небольших объектов. Если вы передаете только объект с 3 свойствами, использование AMF может утроить размер полезной нагрузки.
Кстати, я большой сторонник спокойной архитектуры. Поскольку JSON и AMF являются просто представлениями, вы можете создать службу REST, которая принимает оба варианта и согласовывает фактическое представление с вашим клиентом во время выполнения.
"Если вы хотите иметь быструю и эффективную связь, я настоятельно рекомендую придерживаться протокола AMF"
И если вы хотите быстрой, эффективной и обобщенной коммуникации, используйте json. Тогда ваш веб-сервис будет доступен для flash, ajax или обычных http-запросов.