3

Rails 開発を Flex アプリケーションのバックエンドとして考えており、Rails アプリと Flash Player の間の通信レイヤーを理解しようとしています。私が見つけたものはすべて、SOAP Web サービスを使用して通信することを示唆しています。

ただし、Flash は AMF をサポートしています。AMF は優れた高速 (かつネイティブ) です。RailsアプリからAMFを介して通信する方法はありますが、AMFに関するすべての「優れた」機能(自動型変換、データプッシュなど)をサポートしていますか?

4

7 に答える 7

3

RailsからAMFで応答するために使用できるWebORBまたはRubyAMFがあります。アプローチはそれぞれ少し異なるため、ニーズに依存します。RubyAMF については、Flex で Rails を使用するための優れたリソースであるFlexible Rails eBook の最後の章で説明されています。

于 2008-09-16T09:13:04.530 に答える
2

私は rails/flex アプリケーションを書いている最中で、REST フレームワーク内で JSON 通信を使用することに移行しています。JSON 応答を処理する Flex 側からの単純な HTTP 要求は、クライアントとサーバーを切り離すための最良の方法のように思えました。XML も同様に簡単です。

価値があるのは、フレックス側でも PureMVC フレームワークを使用して、応答をクライアント側モデルに保持することです。

于 2008-09-17T09:38:09.843 に答える
1

3 つの方法 (WebOrb、RubyAMF、REST) をすべて使用してアプリを構築しました...

Rails 用の WebOrb はほとんど機能していません。かなり長い間更新されていません。そうは言っても、Flex が Rails のモデル オブジェクトに透過的にアクセスできるようにする、Flex/Ruby マジックを少し作成することができました。興味があれば、掘り下げてお送りします。

RubyAMF は優れていますが、WebOrb ほど柔軟ではありません (ha!)。

JSON を返す REST は簡単です。これらのうち別のものを作成する必要がある場合 (そうでないことを願っています)、それを引き続き使用します。

YMMV。

于 2009-11-11T12:56:27.530 に答える
1

SOAP Web サービスを使用するのではなく、Rails でネイティブな「ネイティブ」REST Web サービスを使用します。上で DEFusion が引用した本は、実際にはそれに関するもので、REST (つまり XML) を使用して、Rails アプリケーションのフロントエンドとして FLEX クライアントを使用する方法です。

AMF プロトコルは、主に Adob​​e によってバイナリ プロトコルとして構築され、FLEX フロントエンドが CodeFusion およびもちろん Java サーバー アプリケーションと通信できるようにします。実際にはあまりサポートされないAdobeのBlazeDSを使用することを除けば、無料ではありません。そしてもちろん、AMF プロトコルを使用して BlazeDS と通信できるプラグインを選択し (これも DEfusion の投稿を参照)、それに依存する必要があります。

Flex から Rails への REST 経由の直接接続がどれほどうまく機能するかに驚かれることでしょう。さらに、サードパーティに依存する必要もありません。試してみることをお勧めします。

お役に立てれば

于 2008-09-16T15:28:04.703 に答える
1

AMF に応答/生成できるコントローラーとの MVC スタイルの対話が必要な場合は、RubyAMF を使用してください。

モデル オブジェクトへの直接アクセスなど、他のスタイルには WebOrb を使用します。

于 2008-09-30T11:42:33.190 に答える
0

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
  • ケビン
于 2009-11-10T16:18:22.937 に答える
0

AMF によるリモート処理を使用する Ruby on Rails 用の WebORBと呼ばれる Rails プラグインがあります。

于 2008-09-16T09:12:22.393 に答える