2009-03-16 3 views
8

Каков наилучший способ связи между Flex и PHP?Лучший способ для связи 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. Ролл-наш собственного с помощью JSON или некоторых других данных в текст системы сериализации (сериализации в PHP(), XML, и т.д. и т.п.)

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

ответ

8

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

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

И именно так вы знаете, some of the developers от AMFPHP переехал работать на ZendAMF. Таким образом, ZendAMF в некотором смысле является продолжением AMFPHP.

0

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

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

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

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

+0

Как json зависит от браузера? – rick

+0

Я чувствую соблазн свернуть всех, кто упоминает REST снова. Flex не может вообще выполнять REST, не используя замену API связи Flash. – Samuel

+0

@rick: я имел в виду, что JSON требует, чтобы браузер работал. Если вы работаете с настольным приложением, у вас возникнут проблемы с доступом к этому веб-сервису. – Seb

1

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

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

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

Таким образом, слой связи моего приложения является простой Zend Framework питание набор REST ресурсов с URI, как

user/10 
review/15 
location/8/reviews 

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

+0

Спасибо за ввод. Преимущество AMF vs JSON заключается в том, что это двоичный протокол, поэтому он будет более эффективным, чем JSON с точки зрения размера данных и скорости кодирования/декодирования. – davr

+0

Вы всегда можете работать с содержимым gzip'd, поэтому, возможно, вам захочется придерживаться JSON, который легче отлаживать. Для AMF часто требуется веб-прокси, например, Charles для отладки. – Seb

+0

Я чувствую соблазн свернуть всех, кто упоминает REST снова. Flex не может вообще выполнять REST, не используя замену API связи Flash. – Samuel

2

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

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

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

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

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

-2

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

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

+0

A) Это должен быть комментарий к ответу Джона. – Samuel

+0

B) AMF сериализуется двоично, а не ASCII, поэтому он будет быстрее и эффективнее. И AMF позволяет вам передавать строго типизированные объекты взад и вперед между вашим сервером и интерфейсом автоматически. Я бы хотел, чтобы JSON делал это – Samuel

+0

Правда в том, что различия в производительности между JSON и AMF незначительны. Я не утверждал, что Джон был быстрее, просто быстро. Любой объект php может быть выражен с помощью JSON. Php динамически типизируется. Объясните, что вы подразумеваете под «сильно типизированными объектами». – rick

1

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

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

+0

Да, я использовал AMFPHP с самого начала, когда я просто пересматриваю этот выбор, поскольку будущее AMFPHP мне не совсем понятно, и, возможно, новая, лучше, библиотека/шлюз была написана за годы, прошедшие с тех пор AS3. Но сейчас похоже, что прилипание с AMFPHP является лучшим – davr

0

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

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

+0

Почему downvote? –

1

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

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

0

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

Посмотрите на это screencast для генерации ActionScript с PHP, это довольно причудливо.

Cheers.

+0

Скринкаст показывает, как использовать генерацию actioncript ... но не почему, или какие преимущества он дает, делая это по-старому. Это просто так, что вы получаете автозаполнение в редакторе кода для удаленных служб? – davr

+0

Кроме того, есть немного более приятный синтаксис. Например, с помощью AMFPHP и используя встроенные классы удаленного доступа Flex, я могу сделать «service.myCoolMethod.call (« hello »)» и с weborb 'service.myCoolMethod («hello») ... поэтому, я думаю, вы немного сэкономите типирование. – davr

0

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

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

0

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

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

+0

На самом деле AMFPHP имеет интерфейс JSON, а также AMF. Это то, что мы используем (старая версия AMFPHP, хотя и не знаю, что с новыми версиями) – davr

Смежные вопросы