Как разработчик Rails общается с интерфейсом Flex? - PullRequest
3 голосов
/ 16 сентября 2008

Я рассматриваю разработку Rails как бэкэнд для приложения Flex и пытаюсь выяснить уровень связи между приложением Rails и Flash Player. Все, что я нахожу, предполагает использование веб-сервисов SOAP для общения.

Тем не менее, Flash поддерживает AMF, который хорош и быстр (и является родным). Есть ли способ связи через AMF из приложения на Rails, при этом поддерживая все «хорошие» вещи о AMF (автоматическое преобразование типов, отправка данных и т. Д.).

Ответы [ 7 ]

3 голосов
/ 16 сентября 2008

Существует WebORB или RubyAMF , который вы можете использовать для ответа в AMF от Rails, подходы немного разные для каждого из них, поэтому это зависит от ваших потребностей. RubyAMF обсуждается в заключительных главах электронной книги Flexible Rails , которая является хорошим ресурсом по использованию Rails с Flex.

2 голосов
/ 17 сентября 2008

Я нахожусь в процессе написания приложения rails / flex, и мы переходим к использованию JSON-связи в рамках REST. Простые HTTP-запросы со стороны Flex, обрабатывающие ответы JSON, казались наилучшим способом разделения клиента и сервера. XML так же просто.

Для чего бы то ни было, мы используем платформу PureMVC и на гибкой стороне, сохраняя ответы в модели на стороне клиента.

1 голос
/ 11 ноября 2009

Я создал приложения, используя все три метода (WebOrb, RubyAMF, REST) ​​...

WebOrb для Rails практически мертв, он не обновлялся довольно давно. Тем не менее, я смог создать немного волшебства Flex / Ruby, которое сделает доступ Flex к объектам модели Rails прозрачным ... если вам интересно, я откопаю его и отправлю вам.

RubyAMF хорош, но не так гибок (ха!), Как WebOrb.

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

YMMV.

1 голос
/ 30 сентября 2008

Если вы хотите взаимодействие в стиле MVC с контроллерами, которые могут реагировать на / генерировать AMF, используйте RubyAMF.

Используйте WebOrb для любого другого стиля, включая прямой доступ к объектам модели.

1 голос
/ 16 сентября 2008

Вы не будете использовать веб-сервисы SOAP, а будете использовать «родные» веб-сервисы REST, которые являются родными в Rails. Книга, процитированная DEFusion выше, на самом деле о том: как использовать клиент FLEX в качестве внешнего интерфейса приложения Rails с использованием REST (имеется в виду XML).

Протокол AMF изначально был создан Adobe в качестве двоичного протокола, позволяющего интерфейсам FLEX общаться с CodeFusion и, конечно, с серверными приложениями Java. Это не бесплатно, кроме использования Adobe BlazeDS, для которого вы на самом деле не будете иметь большую поддержку. И затем, конечно, вам нужно будет выбрать плагин, способный общаться с BlazeDS по протоколу AMF (опять же, см. Сообщения DEfusion) и положиться на него.

Вы будете удивлены, насколько хорошо работает Flex to Rails через REST, плюс вам не нужно полагаться на сторонних разработчиков. Я бы порекомендовал вам попробовать.

Надеюсь, это поможет

0 голосов
/ 10 ноября 2009

Вы можете использовать WebORB или RubyAMF, или просто обычный XML - Rails довольно умный, когда дело доходит до XML, с несколькими ошибками здесь и там.

Мы используем XML для общения практически между нашими приложениями Rails и нашим веб-приложением Flex. Это довольно просто.

Для извлечения данных из вашего Rails-приложения просто создайте HTTPService с result_type для e4x и вызовите ваш URL. В вашем контроллере rails сделайте что-то вроде:

def people
  render :xml => Person.all.to_xml
end

Иногда Rails добавляет тег в конец. Если это произойдет, измените ваш контроллер на:

def people
  render :xml => Person.all.to_xml.target!
end

Если вы хотите отправить данные в приложение Rails, это так же просто ...

<mx:HTTPService id="theservice" url="http://localhost:3000/svc/add_person" method="POST">
 <mx:request>
  <person>
   <first>Firstname</first>
   <last>Lastname</last>
  </person>
 </request>
</HTTPService>

и в вашем контроллере:

def add_person
  p=Person.create(params[:person])
  render :xml => {:result => "Success"}.to_xml.target!
end
  • Кевин
0 голосов
/ 16 сентября 2008

Существует плагин Rails под названием WebORB для Ruby on Rails , который использует удаленное взаимодействие с AMF.

...