0

LAN内の他のいくつかのサービスを呼び出すインターネット向けのWCFサービスがあります。この呼び出しが完了するまでに数秒かかる場合があります。

この WCF サービスを jquery 経由で呼び出し、スレッドが応答を返したら UI を更新します。

私がやりたいことは、サービスの実行中にユーザーが別のページに移動した場合、(新しいページで) jquery を介した 2 回目の呼び出しが別のスレッドでプロセスを再度開始しないようにすることです。

この種の動作を制御するパターンまたは WCF 機能はありますか?

4

1 に答える 1

0

ここでの問題は、ブラウザがステートレスであることです。1 つのページの HTML、CSS、および JavaScript は、別のページとは完全に別のコンテキストで読み込まれます。したがって、プロセスが引き続き実行されても、データが読み込まれなくなるため、ページにデータを返すことができなくなります。

ユーザーがページを変更した場合でも、UI が更新されるようにしたいようです。これは、Comet を使用することで可能になる可能性があります。

comet の仕組みは、ブラウザからサーバーへの HTTP リクエストを開くことです。次に、サーバーは、クライアントにプッシュバックする必要があるデータを取得するまで、その接続を開いたままにします。サーバーの準備が整うと、サーバーはクライアントに応答を送信します。

この手法は通常、何かが変更されたときに N 個のクライアントを新しいデータで更新するために使用されますが、これを使用して、特定の要求から応答を切り離すことができます。つまり、サーバーに対して行われた要求が応答を受信しないようにアプリケーションをセットアップできます。代わりに、サーバーはコメット接続を介して更新を渡します。

これにより、要求を行ってからページを変更したクライアントは、結果が計算された後でも UI の更新を受け取ることが保証されます。

主要なプラットフォームの多くが Comet をサポートしています。Java、PHP、.NET、node.js は、この手法をサポートしていると私が知っているものの 1 つです。

サポートを獲得している別の同様の手法は、WebSockets です。ただし、すべてのブラウザーがこの手法をサポートしているわけではありません。選択した特定のプラットフォームで Comet について調査することから始めます。より具体的な質問がある場合は、ここで質問できます。幸運を!

于 2012-05-06T07:27:24.167 に答える