【问题标题】:How does a Rails developer talk to Flex front ends?Rails 开发人员如何与 Flex 前端对话?
【发布时间】:2008-09-16 08:58:58
【问题描述】:

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

不过,Flash 支持 AMF,它既好又快(而且是原生的)。有什么方法可以通过 Rails 应用程序通过 AMF 进行通信,同时支持有关 AMF 的所有“好”功能(自动类型转换、数据推送等)。

【问题讨论】:

    标签: ruby-on-rails apache-flex


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      不管怎样,我们也在 flex 端使用 PureMVC 框架,将响应保存在客户端模型中。

      【讨论】:

        【解决方案3】:

        您不会使用 SOAP Web 服务,而是使用 Rails 中原生的“本机”REST Web 服务。上面 DEFusion 引用的那本书其实就是在讲:如何使用 FLEX 客户端作为 Rails 应用程序的前端,使用 REST(意思是 XML)。

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

        您会惊讶于通过 REST 将 Flex 直接连接到 Rails 的效果如何,而且您不必依赖第三方。我建议你试试看。

        希望对你有帮助

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

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

            WebOrb for Rails 几乎已经死了,它已经有一段时间没有更新了。也就是说,我能够创建一些 Flex/Ruby 魔法,使 Flex 对 Rails 的模型对象的访问变得透明......如果你有兴趣,我会挖掘出来并发送给你。

            RubyAMF 不错,但不如 WebOrb 灵活(哈哈!)。

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

            YMMV.

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

                您可以使用 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 应用程序,同样简单..

                <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
                
                • 凯文

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2018-06-03
                  • 1970-01-01
                  • 2017-03-02
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-03-18
                  相关资源
                  最近更新 更多