Riaサービスを使用してSilverlightでアプリケーションを作成しています.Riaサービスを使用すると、サービスコールの開始後にかなり時間がかかることがあります。私はWCFサービスのタイムアウトを増やす方法を探しましたが、より多くのことを考えると、これは正しい解決策ではありません。Silverlight 4 WCF Riaサービスのポーリングパターン
私はむしろ、DomainContextを呼び出してすぐに戻り、クライアントに長期間実行されたクエリが完了したときに、サーバーをポーリングして調べるようにします。
私はこのようなものを実装するための良い方法のパターンや例を探しています。 Webサービスがサービスコールの間に状態を保持してはならないということが、今後も気になる問題です。しかし、これはまさに私がやっていることです。
どのような考えですか?
おかげで、
-Scott
私は現在、WCFサービスであるRiaサービスを使用していますが、これを稼働させるには多くのリファクタリングが必要になるようです。私はおそらく私が持っていた問題のために再びRiaを使用しないでしょうが、私はこのプロジェクトのためにそれに固執する必要があります。私は、サーバー上でシングルトンを作成し、複数のスレッドを生成することによって解決策に近づくことができましたが、サービスの呼び出し側が返すとすぐに、ObjectContextが破棄され、エンティティに当たったときにワーカースレッドが消滅します。私は本当にここにこだわっている。 – Scott
@Scott:これを解決しても、一度にさまざまなクライアントがポーリングすると、各クライアントに何を返すかわからなくなります。 – jweyrich
私は、各呼び出し側にトランザクションを要求するトークンを割り当てています。クライアントは、そのトークンを使用してサーバーをポーリングし、結果がまだ存在するかどうかを確認します。私は基本的に、クライアントがそれを取得するまでヒープ内の結果を保持しています。あるいは、クリーンな状態を維持する別のプロセスによって削除されます。それは紙の上ではよく見えますが、呼び出しスレッドがサービスを終了するとすぐにObjectContextを失うことは、私が期待していたものではありませんでした。回答ありがとうございます...それは、looongの夜になるだろう... – Scott