2

私は、いくつかのローカル リソースといくつかの非ローカル リソースからデータを取得して表示する必要がある Web アプリケーションに取り組んでいます。これらのリソースからデータを取得するには任意の時間がかかる可能性があるため、各アクターがそれぞれのリソースからデータを取得する責任があるように、アクターの概念を使用することを考えています。リクエスト スレッドは、各アクターがタスクを完了するのを待ってから、ajax を使用して、そのデータに依存する Web ページの部分のみを更新します。このようにして、ユーザーはすべてのデータが終了するのを待ってからデータを最初に確認するのではなく、データを受信するとすぐにデータの確認を開始します。

これについては、scala/lift フレームワークを検討する予定です。私は Web で scala/lift に関する記事をいくつか読みましたが、これがこの問題にアプローチする正しい方法であるかどうか、また scala/lift が適切なプラットフォームであるかどうかを調査したいと考えています。以前は Java と C# で働いていました。ご意見、ご感想、ご提案は大歓迎です。

ありがとう、ゲイリー

4

4 に答える 4

4

Java の JMS のようなメッセージ キュー テクノロジを見てみましょう。メッセージ キューを使用すると、実行時間の長いバックグラウンド タスクを非同期かつ確実に処理できます。これは、Flickr や YouTube などのサイトがメディアのトランスコーディングを非同期で行うために使用する手法です。Java EE サーバー、または Apache のActiveMQのような JMS テクノロジーを使用して、Scala/Lift コードをその上に重ねることができます。

JMS に関するRichard Monson-Haefel の本は、それをよくカバーしています。

Web サイトのスケーリングと構築に関する一般的なヘルプについては、Todd Hoff の優れたブログ ( highscalability.com/ ) を参照してください。このように、メッセージ キューを使用して長時間実行されるタスクをオフロードするためのヒントがいくつかあります。

ところで、Twitter は Scala を使用して、あなたが検討しているものによく似たものを使用しています。これは、開発者の何人かへのインタビューです。彼らは、Scala を使用する 1 つの方法について説明しています。

Robey Pointer: 私たちのアーキテクチャの多くは、AJAX、Web フロント エンド、Web サイト (ユーザーが見るもの) など、Rails が最も得意とすることを行うことに基づいています。リクエスト/レスポンス サイクルからオフロードできるものはすべてオフロードします。そのため、これらのタスクをメッセージング システムのキューに入れ、バックエンド デーモンに処理させます。

于 2009-11-22T06:17:02.250 に答える
2

非ローカル リソースが他のサービスまたはシステムで発生した場合は、イベント ドリブン アーキテクチャが適している可能性があります。非ローカル リソースからプルする代わりに、この Web アプリケーションを、これらのサービスによって公開されたイベントのサブスクライバーとして設定できます。機能の一部に関するメッセージを受信すると、関心のあるデータをローカルにキャッシュします。これにより、ページの一部の非同期更新の問題を回避できます (すべてのデータにローカルでアクセスできます)。

Udi Dahanは、このアプローチについて多くのブログを書いており、そのようなシナリオで使用できる.NET メッセージ バス ( NServiceBus ) の作成者でもあります。たとえば、http://msdn.microsoft.com/en-us/architecture/aa699424.aspxを参照してください。

于 2009-11-22T11:08:45.580 に答える
1

俳優は行く方法です。基本的に、JMS の軽量バージョンをセットアップしています。そして、Lift はコメットを非常にうまく処理します。Scala アクターと Lift アクターに加えて、akka アクターもあります。Scala Swarmが本番環境の準備が整うと、その準備も整います。

于 2009-11-22T19:02:22.727 に答える
0

遅延した情報がすぐに表示する必要がある情報とは異なる場合、Lift を使用すると、実行時間の長い計算 (Web サービスを呼び出す) をロジックの一部として持つ LazyLoad スニペットを使用できます。準備ができたら Lift がページへの挿入を処理します。

于 2012-06-21T01:59:32.470 に答える