Pregunta

Estoy considerando el desarrollo de Rails como un backend para una aplicación Flex y estoy tratando de descubrir la capa de comunicación entre la aplicación Rails y Flash Player.Todas las cosas que encuentro sugieren el uso de servicios web SOAP para comunicarme.

Sin embargo, Flash admite AMF, que es agradable y rápido (y nativo).¿Existe alguna forma de comunicarse a través de AMF desde una aplicación Rails, al mismo tiempo que se admiten todas las cosas "buenas" de AMF (conversión automática de tipos, envío de datos, etc.)?

¿Fue útil?

Solución

Hay WebORB o rubyamf que puedes usar para responder en AMF desde Rails, los enfoques son un poco diferentes para cada uno por lo que depende de tus necesidades.RubyAMF se analiza en los capítulos finales del Rieles flexibles Libro electrónico que es un buen recurso sobre el uso de Rails con Flex.

Otros consejos

Estoy escribiendo una aplicación Rails/flex y estamos pasando a utilizar una comunicación JSON dentro del marco REST.Las solicitudes HTTP simples del lado Flex que manejan respuestas JSON parecían la mejor manera de desacoplar el cliente y el servidor.XML es igual de fácil.

Por si sirve de algo, también utilizamos el marco PureMVC en el lado flexible, manteniendo las respuestas en un modelo del lado del cliente.

No utilizaría servicios web SOAP sino servicios web REST "nativos", que son nativos en Rails.El libro citado por DEFusion anteriormente trata en realidad sobre eso:cómo utilizar un cliente FLEX como interfaz de una aplicación Rails usando REST (es decir, XML).

El protocolo AMF ha sido creado principalmente por Adobe como un protocolo binario para permitir que las interfaces FLEX se comuniquen con CodeFusion y, por supuesto, con las aplicaciones del servidor Java.No es gratuito, aparte de utilizar BlazeDS de Adobe, para el que en realidad no tendrás mucho soporte.Y luego, por supuesto, tendrás que elegir un complemento capaz de comunicarse con BlazeDS usando el protocolo AMF (nuevamente, consulta las publicaciones de DEfusion) y confiar en él.

Te sorprendería lo bien que funciona Flex to Rails directo a través de REST, además no tienes que depender de terceros.Te recomiendo que lo pruebes.

Espero que esto ayude

Elija RubyAMF si desea una interacción estilo MVC con controladores que puedan responder/generar AMF.

Utilice WebOrb para cualquier otro estilo, incluido el acceso directo a los objetos del modelo.

He creado aplicaciones utilizando los tres métodos (WebOrb, RubyAMF, REST)...

WebOrb for Rails está prácticamente muerto, no se ha actualizado desde hace bastante tiempo.Dicho esto, pude crear un poco de magia Flex/Ruby que hace que el acceso Flex a los objetos del modelo de Rails sea transparente...Si estás interesado lo desenterraré y te lo enviaré.

RubyAMF es agradable, pero no tan flexible (¡ja!) como WebOrb.

REST devolver JSON es muy fácil, y si tengo que crear otro de estos (espero que no), eso es lo que seguiré usando.

YMMV.

Hay un complemento Rails llamado WebORB para Ruby on Rails que utiliza comunicación remota con AMF.

Puedes usar WebORB o RubyAMF, o simplemente XML: Rails es bastante inteligente cuando se trata de XML, con algunos errores aquí y allá.

Usamos XML para comunicarnos entre nuestras aplicaciones Rails y nuestra aplicación web Flex, casi exclusivamente.Es bastante simple.

Para recuperar datos de su aplicación Rails, simplemente cree un servicio HTTP con tipo_resultado de e4x y llame a su URL.En tu controlador Rails, haz algo como:

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

A veces, Rails agregará la etiqueta al final.Si esto sucede, cambie su controlador a:

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

Si desea enviar datos a su aplicación Rails, es igual de fácil.

<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>

y en tu controlador:

def add_person
  p=Person.create(params[:person])
  render :xml => {:result => "Success"}.to_xml.target!
end
  • kevin
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top