Domanda

Sto considerando lo sviluppo di Rails come backend di un'applicazione Flex e sto cercando di capire il livello di comunicazione tra l'app Rails e Flash Player.Tutte le cose che trovo suggeriscono di utilizzare i servizi Web SOAP per comunicare.

Tuttavia, Flash supporta AMF che è piacevole e veloce (e nativo).Esiste un modo per comunicare tramite AMF da un'app Rails, supportando al tempo stesso tutte le cose "interessanti" di AMF (conversione automatica del tipo, push dei dati, ecc.).

È stato utile?

Soluzione

C'è WebORB O RubyAMF che puoi utilizzare per rispondere in AMF da Rails, gli approcci sono leggermente diversi per ciascuno, quindi dipende dalle tue esigenze.RubyAMF è discusso nei capitoli conclusivi del Guide flessibili eBook che è una buona risorsa sull'utilizzo di Rails con Flex.

Altri suggerimenti

Sto scrivendo un'applicazione rails/flex e stiamo passando all'utilizzo di una comunicazione JSON all'interno del framework REST.Semplici richieste HTTP dal lato Flex che gestisce le risposte JSON sembravano il modo migliore per disaccoppiare client e server.XML è altrettanto semplice.

Per quello che vale, utilizziamo il framework PureMVC anche dal lato flessibile, mantenendo le risposte in un modello lato client.

Non utilizzeresti servizi Web SOAP ma piuttosto servizi Web REST "nativi", che sono nativi in ​​Rails.Il libro citato da DEFusion sopra parla in realtà di questo:come utilizzare un client FLEX come front-end di un'applicazione Rails utilizzando REST (che significa XML).

Il protocollo AMF è stato creato principalmente da Adobe come protocollo binario per consentire ai front-end FLEX di comunicare con CodeFusion e, naturalmente, con le applicazioni server Java.Non è gratuito, a parte l'utilizzo di BlazeDS di Adobe per il quale in realtà non avrai molto supporto.E poi, ovviamente, dovrai scegliere un plugin in grado di comunicare con BlazeDS utilizzando il protocollo AMF (di nuovo, vedi i post di DEfusion) e fare affidamento su di esso.

Rimarrai sorpreso da quanto bene funzioni Direct Flex to Rails tramite REST, inoltre non devi fare affidamento su terze parti.Ti consiglierei di provarlo.

Spero che questo ti aiuti

Scegli RubyAMF se desideri un'interazione in stile MVC con i controllori in grado di rispondere/generare AMF.

Utilizza WebOrb per qualsiasi altro stile, incluso l'accesso diretto agli oggetti del modello.

Ho creato app utilizzando tutti e tre i metodi (WebOrb, RubyAMF, REST)...

WebOrb for Rails è praticamente morto, non viene aggiornato da un po' di tempo.Detto questo, sono riuscito a creare un po' di magia Flex/Ruby che rende trasparente l'accesso di Flex agli oggetti del modello di Rails...se ti interessa lo scopro e te lo invio.

RubyAMF è carino, ma non flessibile (ah!) come WebOrb.

REST restituire JSON è un gioco da ragazzi, e se devo crearne un altro (spero di no) è quello che continuerò a usare.

YMMV.

C'è un plugin Rails chiamato WebORB per Ruby on Rails che utilizza la comunicazione remota con AMF.

Puoi usare WebORB o RubyAMF, o semplicemente XML: Rails è piuttosto intelligente quando si tratta di XML, con alcuni trucchi qua e là.

Usiamo XML per comunicare tra le nostre app Rails e la nostra applicazione web Flex, quasi esclusivamente.È piuttosto semplice.

Per recuperare i dati dalla tua app Rails, crea semplicemente un HTTPService con result_type di e4x e chiama il tuo URL.Nel controller dei binari, fai qualcosa del tipo:

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

A volte Rails aggiungerà il tag alla fine.Se ciò accade, cambia il controller in:

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

Se vuoi inviare dati alla tua app Rails, è altrettanto semplice..

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

e nel controller:

def add_person
  p=Person.create(params[:person])
  render :xml => {:result => "Success"}.to_xml.target!
end
  • Kevin
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top