Rails开发人员如何与Flex前端交谈?

我正在将Rails开发视为Flex应用程序的后端,并试图弄清楚Rails应用程序和Flash Player之间的通信层。 我发现的所有内容都建议使用SOAP Web服务进行通信。

但是,Flash支持AMF,它既漂亮又快速(和原生)。 有没有办法通过Rails应用程序通过AMF进行​​通信,同时支持AMF的所有“好”的东西(自动类型转换,数据推送等)。

您可以使用WebORB或RubyAMF在Rails中使用AMF进行​​响应,每种方法都有所不同,因此它取决于您的需求。 Ruby RFS在Flexible Rails电子书的最后几章中讨论,这是使用Rails with Flex的一个很好的资源。

我正在编写rails / flex应用程序,我们正在使用REST框架中的JSON通信。 来自Flex端处理JSON响应的简单HTTP请求似乎是解耦客户端和服务器的最佳方式。 XML也很简单。

对于它的价值,我们也在flex侧使用PureMVC框架,将响应保持在客户端模型中。

您不会使用SOAP Web服务,而是使用“本机”REST Web服务,这些服务在Rails中是本机的。 以上DEFusion引用的书实际上是关于:如何使用FLEX客户端作为使用REST(意味着XML)的Rails应用程序的前端。

AMF协议主要由Adobe构建为二进制协议,允许FLEX前端与CodeFusion以及Java服务器应用程序通信。 它不是免费的,除了使用Adobe的BlazeDS,你实际上没有太多的支持。 当然,你必须选择一个能够使用AMF协议与BlazeDS对话的插件(再次参见DEfusion的post)并依赖它。

你会惊讶地发现,通过REST直接将Flex转换为Rails,而且你不必依赖第三方。 我建议你尝试一下。

希望这可以帮助

如果您希望与可以响应/生成AMF的控制器进行MVC样式交互,请使用RubyAMF。

将WebOrb用于任何其他样式,包括直接访问模型对象。

我使用所有三种方法(WebOrb,RubyAMF,REST)构建了应用程序……

WebOrb for Rails已经死了,它已经很久没有更新了。 这就是说我能够创建一些Flex / Ruby魔法,使得Flex访问Rails的模型对象变得透明……如果你有兴趣我会把它挖出来发送给你。

RubyAMF很好,但不像WebOrb那样灵活(哈!)。

REST返回JSON是一个快照,如果我必须构建另一个(我希望不是)这是我将继续使用。

因人而异。

有一个名为WebORB的Rails插件, 用于Ruby on Rails ,它使用AMF进行​​远程处理。

您可以使用WebORB或RubyAMF,或者只使用简单的XML – Rails在XML方面非常聪明,并且有一些问题。

我们使用XML几乎完全在我们的Rails应用程序和我们的Flex Web应用程序之间说话。 这很简单。

要从Rails应用程序检索数据,只需创建一个result_type为e4x的HTTPService,然后调用您的URL。 在您的rails控制器中,执行以下操作:

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

有时,Rails会将标记添加到最后。 如果发生这种情况,请将控制器更改为:

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

如果你想将数据发送到你的Rails应用程序,那就简单了..

    Firstname Lastname    

在你的控制器中:

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