Rails开发人员如何与Flex前端对话?

时间:2020-03-05 18:55:26  来源:igfitidea点击:

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

但是,Flash支持AMF,它既好又快速(本机)。有什么方法可以通过Rails应用程序通过AMF进行​​通信,同时支持有关AMF的所有"妙"事(自动类型转换,数据推送等)。

解决方案

回答

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

回答

我们可以使用WebORB或者RubyAMF在Rails的AMF中进行响应,每种方法都有点不同,因此取决于需求。 Flexible Rails电子书的最后几章讨论了RubyAMF,这是将Rails与Flex结合使用的很好资源。

回答

我们不会使用SOAP Web服务,而会使用Rails中本地的"本地" REST Web服务。上面DEFusion引用的书实际上是关于这本书的:如何使用FLEX客户端作为使用REST(意味着XML)的Rails应用程序的前端。

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

我们会惊讶于通过REST将Flex直接引导到Rails的效果如何,再加上我们不必依赖第三方。我建议我们尝试一下。

希望这可以帮助

回答

我正在编写Rails / flex应用程序,正在转向在REST框架内使用JSON通信。 Flex端处理JSON响应的简单HTTP请求似乎是分离客户端和服务器的最佳方法。 XML同样简单。

对于它的价值,我们也在弹性方面使用PureMVC框架,将响应保存在客户端模型中。

回答

如果我们想与可以响应/生成AMF的控制器进行MVC风格的交互,请使用RubyAMF。

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

回答

我们可以使用WebORB或者RubyAMF,或者简单的XML Rails在涉及XML时非常聪明,这里到处都有一些陷阱。

我们使用XML几乎在我们的Rails应用程序和Flex Web应用程序之间进行交流。很简单

要从Rails应用程序检索数据,只需创建一个result4类型为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应用程序,则非常简单。

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

并在控制器中:

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

回答

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

WebOrb for Rails几乎已经死了,它已经有一段时间没有更新了。也就是说,我能够创建一些Flex / Ruby魔术,使Flex可以透明地访问Rails的模型对象...如果我们有兴趣,我将对其进行挖掘并将其发送给我们。

RubyAMF很好,但是不如WebOrb灵活(ha!)。

REST返回JSON很简单,如果我必须构建其中的另一个(我希望不是),那我将继续使用。

YMMV。