Rails开发人员如何与Flex前端对话?
我正在将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。