2008-09-16 4 views
3

Ich betrachte die Entwicklung von Rails als Backend für eine Flex-Anwendung und versuche, die Kommunikationsschicht zwischen der Rails App und dem Flash Player herauszufinden. All die Dinge, die ich finde, empfehlen die Verwendung von SOAP-Webdiensten zur Kommunikation.Wie spricht ein Rails-Entwickler mit den Flex-Frontends?

Flash unterstützt jedoch AMF, das ist schön und schnell (und nativ). Gibt es irgendeine Möglichkeit über AMF von einer Rails App zu kommunizieren, während alle "netten" Dinge über AMF unterstützt werden (automatische Typumwandlung, Daten-Push usw.).

Antwort

3

Es gibt WebORB oder RubyAMF die Sie verwenden können, um in AMF von Rails zu reagieren, die Ansätze sind ein bisschen unterschiedlich für jeden, so dass es auf Ihre Bedürfnisse abhängt. RubyAMF wird in den letzten Kapiteln des eBooks Flexible Rails diskutiert, das eine gute Ressource für die Verwendung von Rails mit Flex ist.

1

Sie würden keine SOAP-Webdienste verwenden, sondern "native" REST-Webdienste, die in Rails nativ sind. Das Buch, das von DEFusion oben zitiert wird, geht es eigentlich darum: wie man einen FLEX-Client als Front-End einer Rails-Anwendung benutzt, indem man REST (dh XML) benutzt.

Das AMF-Protokoll wurde in erster Linie von Adobe als Binärprotokoll erstellt, damit FLEX-Frontends mit CodeFusion und natürlich Java-Serveranwendungen kommunizieren können. Es ist nicht kostenlos, abgesehen von Adobe BlazeDS, für die Sie eigentlich nicht viel Unterstützung haben. Und dann müssen Sie natürlich ein Plugin wählen, das mit BlazeDS mit dem AMF-Protokoll kommunizieren kann (siehe auch die DEfusion-Beiträge) und sich darauf verlassen.

Sie würden überrascht sein, wie reibungslos Flex Rails mit REST funktioniert, und Sie müssen sich nicht auf Dritte verlassen. Ich würde dir empfehlen, es zu versuchen.

hoffe, das hilft

2

Ich bin in der Mitte eine Schienen/Flex-Anwendung zu schreiben, und wir ziehen eine JSON-Kommunikation innerhalb des REST Rahmen zu verwenden. Einfache HTTP-Anfragen von der Flex-Seite, die JSON-Antworten behandeln, schienen der beste Weg zu sein, den Client und den Server zu entkoppeln. XML ist genauso einfach.

Für das, was es wert ist, verwenden wir das PureMVC-Framework auch auf der Flex-Seite und behalten die Antworten in einem clientseitigen Modell bei.

1

Gehen Sie mit RubyAMF, wenn Sie eine MVC-Stil-Interaktion mit Contollern wollen, die auf AMF reagieren können.

Verwenden Sie WebOrb für jeden anderen Stil, einschließlich direktem Zugriff auf Modellobjekte.

0

Sie können WebORB oder RubyAMF oder einfach nur XML verwenden - Rails ist ziemlich schlau, wenn es um XML geht, mit ein paar Fehlern hier und da.

Wir verwenden fast ausschließlich XML, um zwischen unseren Rails-Apps und unserer Flex-Webanwendung zu sprechen. Es ist ziemlich einfach.

Um Daten aus Ihrer Rails App abzurufen, erstellen Sie einfach einen HTTPService mit result_type von e4x und rufen Sie Ihre URL auf. In Ihrem Schienen-Controller, tun Sie etwas wie:

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

Manchmal wird Rails das Tag bis zum Ende hinzufügen.Wenn dies der Fall ist, ändern Sie Ihre Controller:

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

Wenn Sie Daten senden, um Ihre Rails-Anwendung wollen, es ist nur so einfach ..

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

und in Ihrem Controller:

def add_person 
    p=Person.create(params[:person]) 
    render :xml => {:result => "Success"}.to_xml.target! 
end 
  • Kevin
1

Ich habe Apps mit allen drei Methoden (WebOrb, RubyAMF, REST) ​​erstellt ...

WebOrb for Rails ist ziemlich tot, es wurde nicht in ziemlich lange aktualisiert. Trotzdem konnte ich ein bisschen Flex/Ruby-Magie erzeugen, die den Zugriff von Flex auf die Modellobjekte von Rails transparent macht ... wenn du interessiert bist, werde ich es ausgraben und dir schicken.

RubyAMF ist nett, aber nicht so flexibel (ha!) Wie WebOrb.

REST, der JSON zurückgibt, ist ein Kinderspiel, und wenn ich noch eins davon bauen muss (ich hoffe nicht), werde ich es weiter verwenden.

YMMV.