2008-09-16 56 views
3

我正在將Rails開發看作Flex應用程序的後端,並試圖找出Rails應用程序和Flash Player之間的通信層。我發現的所有東西都建議使用SOAP Web服務進行通信。Rails開發人員如何與Flex前端對話?

但是,Flash支持AMF,它非常快速(和原生)。是否有任何通過Rails應用程序通過AMF進行​​通信的方式,同時支持關於AMF(自動類型轉換,數據推送等)的所有「好」事情。

回答

3

WebORBRubyAMF你可以用它來從Rails的AMF響應,每種方法都有點不同,所以它取決於你的需求。 RubyAMF在Flexible Rails電子書的結尾章節中討論,這是使用Rails with Flex的一個很好的資源。

1

您不會使用SOAP Web服務,而是使用Rails中的本機REST Web服務。上面的DEFusion引用的這本書其實是關於如何使用FLEX客戶端作爲使用REST(即XML)的Rails應用程序的前端。

AMF協議主要由Adobe作爲二進制協議構建,以允許FLEX前端與CodeFusion以及Java服務器應用程序交談。它不是免費的,除了使用Adobe的BlazeDS,你實際上沒有太多的支持。當然,你必須選擇一個能夠使用AMF協議與BlazeDS交​​談的插件(再次參見DEfusion的帖子)並依賴它。

您會驚訝地發現,通過REST直接引導Flex到Rails的效果如何,再加上您不必依靠第三方。我建議你嘗試一下。

希望這有助於

2

我在寫一個導軌/ Flex應用程序中,我們正在使用REST框架內的JSON通信。來自Flex端的處理JSON響應的簡單HTTP請求看起來是解耦客戶端和服務器的最佳方式。 XML同樣簡單。

對於它的價值,我們正在使用的彈性側puremvc的框架內爲好,保持在一個客戶端模型的響應。

1

如果您希望與可響應/生成AMF的控制器進行MVC風格交互,請使用RubyAMF。

將WebOrb用於任何其他樣式,包括直接訪問模型對象。

0

可以使用的WebORB或RubyAMF,或只是簡單的XML - Rails是一個非常聰明,當涉及到XML,在這裏和那裏的幾個陷阱。

我們使用XML在我們的Rails應用程序和我們的Flex Web應用程序之間進行通話,幾乎只用它。這很簡單。

有關從您的Rails應用程序檢索數據,只是創建E4X的result_type的中的HTTPService,並打電話給你的網址。在您的導軌控制器中,執行如下操作:

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 
  • Kevin
1

我已經使用所有三種方法(WebOrb,RubyAMF,REST)構建應用程序...

WebOrb for Rails幾乎已經死了,它還沒有在相當長的時間內更新過。這就是說我可以創建一些Flex/Ruby魔術,讓Flex可以訪問Rails的模型對象。如果您有興趣,我會將其挖掘併發送給您。

RubyAMF很好,但不像WebOrb那樣靈活(ha!)。

返回JSON的REST很簡單,如果我必須構建其中一個(我不希望),那就是我將繼續使用的。

YMMV。

相關問題