Обмен данными между клиентом на ActionScript3 и сервером на PHP
Вопрос обмена данными между клиентом на ActionScript 3 и сервером много обсуждался, но хотелось бы раз и навсегда расставить все точки над ё.
Не хотелось бы рассуждать на тему «флеш умер или нет», просто будем воспринимать как данность, что разработка ведется на ActionScript 3.
Насколько мне известно, существует три классических подхода обмена данными между клиентом и веб-сервисом: REST, SOAP и велосипед по собственным чертежам.
При использовании REST и велосипедного метода можно использовать разные способы структурирования данных: текстовые XML и JSON, бинарный AMF.
Так же есть пока еще экзотический Protocol Buffers и другие менее известные инструменты.
Хотелось бы узнать, какой способ обмена данными более удачный? Важна также реализация на PHP: существующие библиотеки и возможность внедрения в существующий проект.
Учавствовал в разработке таких игры. Использовали amfphp. Была какая-то простенькая библиотека, но видать писали ее сами разработчики, на нашел похожей.
P.S. Расширение php-amf3, которое в свою очередь дает две простые amf3_encode и amf3_decode и будет работать (теоретически) намного быстрее других решений, смотрится уж очень соблазнительно. Я бы попробовал.
Для стандартной связки я практически всегда использовал REST вместе с XML / JSON.
Велосипедов и инструментов много. Но это вопрос из серии «какая CMS лучше, какой фреймворк лучше использовать для этой связки» и тд.
Если вам нужно организовать видео чат и передавать данные между сервером, может быть REST в таком виде вам не подойдет и надо смотреть в сторону Protocol Buffers / AMF или комбинировать решение. Если вам нужно сделать красивую форму связи, то может и стандартного $_REQUEST хватить.
Дальше, на мой взгляд, надо смотреть, какие инструменты вы сами лучше знаете и с какими вам комфортнее работать.
В принципе, можно конкретизировать задачу: задача — обмен сложными, большими структурами данных. Приложение представляет собой игру.
Хотелось бы получать эти структуры на клиенте стандартизированными, желательно типизированными, и желательно, чтобы свойства имели заданные типы, не обязательно строковые.
Знание инструмента не принципиально, так как есть возможность изучать новые.
То есть, хочется двигаться вперед в правильном направлении.
«Хотелось бы получать эти структуры на клиенте стандартизированными, желательно типизированными, и желательно, чтобы свойства имели заданные типы, не обязательно строковые.»
JSON универсальный, всеми понимаемый, типизированный формат данных. А учитывая что ваши языки оба имеют нативную поддержку его, ну грех не воспользоваться. Гибкости ему не занимать, и при этом он прост.
А что есть под PHP для работы с AMF? Насколько я понимаю, amfPHP — это фреймворк со своей структурой проекта. Есть ли библиотеки, которые позволяли бы добавить работу с ним в существующий проект с уже заданной структурой?
Я не работал с ZF. Я слышал, что можно использовать его отдельные модули, не используя весь фреймворк, но будет ли это удобно и можно ли вообще выделить этот модуль из фреймворка или нужно держать его полностью в своем проекте?
Используем Zend AMF в проекте на Symfony 2, проблем с интеграцией не было. Единственное Zend_Amf тянет с собой зависимости от Zend_Server и подобных компонентов.