2008-09-16 6 views
3

Je regarde le développement de Rails en tant que backend pour une application Flex et j'essaie de comprendre la couche de communication entre l'application Rails et Flash Player. Toutes les choses que je trouve suggèrent d'utiliser les services Web SOAP pour communiquer.Comment un développeur Rails peut-il parler aux extrémités frontales Flex?

Toutefois, Flash prend en charge AMF qui est agréable et rapide (et natif). Existe-t-il un moyen de communiquer via AMF à partir d'une application Rails, tout en prenant en charge toutes les «bonnes» choses sur AMF (conversion automatique de type, push de données, etc.).

Répondre

3

Il y a WebORB ou RubyAMF que vous pouvez utiliser pour répondre dans AMF de Rails, les approches sont un peu différentes pour chacune d'entre elles, cela dépend de vos besoins. RubyAMF est discuté dans les chapitres de clôture de l'eBook Flexible Rails qui est une bonne ressource sur l'utilisation de Rails avec Flex.

1

Vous n'utilisez pas les services Web SOAP mais les services Web REST «natifs», qui sont natifs dans Rails. Le livre cité par DEFusion ci-dessus est en fait à ce sujet: comment utiliser un client FLEX en tant que frontal d'une application Rails en utilisant REST (signifiant XML).

Le protocole AMF a été principalement conçu par Adobe en tant que protocole binaire pour permettre aux applications frontales FLEX de communiquer avec CodeFusion et, bien sûr, avec les applications serveur Java. Ce n'est pas gratuit, mis à part l'utilisation de BlazeDS d'Adobe pour laquelle vous n'aurez pas beaucoup de soutien. Et bien sûr, vous devrez choisir un plugin capable de parler à BlazeDS en utilisant le protocole AMF (encore une fois, voir les messages de DEfusion) et compter dessus.

Vous seriez surpris de voir à quel point Flex to Rails fonctionne via REST, sans compter sur des tiers. Je vous recommande de l'essayer.

Hope this helps

2

Je suis au milieu d'écrire un rail/application flexible et nous déplacer à l'aide d'une communication JSON dans le cadre REST. Les requêtes HTTP simples provenant des réponses JSON du côté Flex semblaient être le meilleur moyen de découpler le client et le serveur. XML est aussi facile.

Pour ce que ça vaut, nous utilisons aussi le framework PureMVC du côté flexible, en gardant les réponses dans un modèle côté client.

1

Optez pour RubyAMF si vous souhaitez une interaction de type MVC avec des contrôleurs pouvant répondre à/générer AMF.

Utilisez WebOrb pour tout autre style, y compris un accès direct aux objets du modèle.

0

Vous pouvez utiliser WebORB ou RubyAMF, ou tout simplement XML - Rails est assez intelligent quand il s'agit de XML, avec quelques pièges ici et là.

Nous utilisons XML pour parler entre nos applications Rails et notre application Web Flex, presque exclusivement. C'est plutôt simple.

Pour récupérer des données de votre application Rails, créez simplement un service HTTPS avec result_type de e4x et appelez votre URL. Dans votre contrôleur de rails, faites quelque chose comme:

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

Parfois, Rails ajoutera l'étiquette à la fin.Si cela se produit, changez votre contrôleur:

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

Si vous souhaitez envoyer des données à votre application Rails, il est tout aussi facile ..

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

et dans votre contrôleur:

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

J'ai construit des applications en utilisant les trois méthodes (WebOrb, RubyAMF, REST) ​​...

WebOrb pour Rails est pratiquement mort, il n'a pas été mis à jour depuis longtemps. Cela dit, j'ai été capable de créer un peu de magie Flex/Ruby qui rend l'accès de Flex aux objets modèles de Rails transparent ... si vous êtes intéressé je vais le déterrer et vous l'envoyer.

RubyAMF est sympa, mais pas aussi flexible (ha!) Que WebOrb. REST retournant JSON est un jeu d'enfant, et si je dois en construire un autre (je ne l'espère pas), c'est ce que je vais continuer à utiliser.

YMMV.

Questions connexes