1

次の機能を備えた Rails アプリケーションを開発するための最良の方法を考えています。

  • すべてのデータは、サードパーティへの SOAP リクエストから取得されます
  • バックグラウンド タスクは、この SOAP リクエストを ~10 秒ごとに行います
  • バックグラウンド タスクは応答を解析し、それに応じて ActiveRecord モデルを更新します。
  • データはデータベースにまったく書き込まれません。アプリが失敗した場合、バックアップを開始すると、データは再び SOAP 要求から取得されます。
  • ユーザーは、モデル内のデータを表示するだけのアプリにリクエストを行います (つまり、soap リクエストから)。

データはそれほど頻繁に変更されないため、ユーザーごとに SOAP リクエストを行うことを避けるという考え方です。とにかく、データベースを使用しないと、リクエストからのみ取得されるデータの読み取りと書き込みが回避されます。

いくつかの gem を使用すれば、これらすべてを完全に単純化できると思いますが、要件を満たすものと満たさないものを選別するのに少し苦労しました。

ありがとう

4

2 に答える 2

1

WebService からの結果が実際に変化しない場合は、Rails キャッシュ メカニズムをお勧めします。Rails アプリのどこでも、次のことができます。

Rails.cache.fetch "a_unique_cache_key" do
  ... do your SOAP request and return the result
end

これにより、ブロック内で一度だけ作業が行われ、後でその結果が Rails キャッシュ ストアから取得されます。

キャッシュ ストアにはさまざまなタイプがあります (そのうちの 1 つが memcache ストアです)。私は通常、トラフィックが中程度のサイトではファイル ストアを使用しますが、別の場所を選択することもできます: http://guides.rubyonrails.org/caching_with_rails.html

于 2012-04-25T13:53:52.710 に答える
1

この場合、ActiveRecord を使用することで得られるメリットはわかりません。

おそらく、SOAP 呼び出しの他のタイプの永続化を検討してください。

于 2012-04-25T08:59:27.513 に答える