我正在將Rails開發看作Flex應用程序的後端,並試圖找出Rails應用程序和Flash Player之間的通信層。我發現的所有東西都建議使用SOAP Web服務進行通信。Rails開發人員如何與Flex前端對話?
但是,Flash支持AMF,它非常快速(和原生)。是否有任何通過Rails應用程序通過AMF進行通信的方式,同時支持關於AMF(自動類型轉換,數據推送等)的所有「好」事情。
我正在將Rails開發看作Flex應用程序的後端,並試圖找出Rails應用程序和Flash Player之間的通信層。我發現的所有東西都建議使用SOAP Web服務進行通信。Rails開發人員如何與Flex前端對話?
但是,Flash支持AMF,它非常快速(和原生)。是否有任何通過Rails應用程序通過AMF進行通信的方式,同時支持關於AMF(自動類型轉換,數據推送等)的所有「好」事情。
有WebORB或RubyAMF你可以用它來從Rails的AMF響應,每種方法都有點不同,所以它取決於你的需求。 RubyAMF在Flexible Rails電子書的結尾章節中討論,這是使用Rails with Flex的一個很好的資源。
有一個名爲WebORB for Ruby on Rails的Rails插件,它使用AMF進行遠程處理。
您不會使用SOAP Web服務,而是使用Rails中的本機REST Web服務。上面的DEFusion引用的這本書其實是關於如何使用FLEX客戶端作爲使用REST(即XML)的Rails應用程序的前端。
AMF協議主要由Adobe作爲二進制協議構建,以允許FLEX前端與CodeFusion以及Java服務器應用程序交談。它不是免費的,除了使用Adobe的BlazeDS,你實際上沒有太多的支持。當然,你必須選擇一個能夠使用AMF協議與BlazeDS交談的插件(再次參見DEfusion的帖子)並依賴它。
您會驚訝地發現,通過REST直接引導Flex到Rails的效果如何,再加上您不必依靠第三方。我建議你嘗試一下。
希望這有助於
我在寫一個導軌/ Flex應用程序中,我們正在使用REST框架內的JSON通信。來自Flex端的處理JSON響應的簡單HTTP請求看起來是解耦客戶端和服務器的最佳方式。 XML同樣簡單。
對於它的價值,我們正在使用的彈性側puremvc的框架內爲好,保持在一個客戶端模型的響應。
如果您希望與可響應/生成AMF的控制器進行MVC風格交互,請使用RubyAMF。
將WebOrb用於任何其他樣式,包括直接訪問模型對象。
可以使用的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
我已經使用所有三種方法(WebOrb,RubyAMF,REST)構建應用程序...
WebOrb for Rails幾乎已經死了,它還沒有在相當長的時間內更新過。這就是說我可以創建一些Flex/Ruby魔術,讓Flex可以訪問Rails的模型對象。如果您有興趣,我會將其挖掘併發送給您。
RubyAMF很好,但不像WebOrb那樣靈活(ha!)。
返回JSON的REST很簡單,如果我必須構建其中一個(我不希望),那就是我將繼續使用的。
YMMV。