1

Webアプリケーションのオートコンプリート検索にはSOLRを使用します。大量のデータをデータベースに追加する夜間のプロセスがあり、そのプロセスが終了したら、そのデータをデータベースからSOLRサーバーにインポートする必要があります。

現在、そのインポートプロセスは次の順序で手動で実行されます。

  1. ondeckSOLRサーバーがアイドル状態かどうかを確認します
  2. ondeckサーバーにデータの完全なインポートを行うように指示します。サーバーのステータスは「ビジー」です。
  3. ondeckサーバーを頻繁にポーリングし、終了すると、ステータスはアイドル状態に戻ります。
  4. オンデッキサーバー(新しい情報を含む)をライブSOLRサーバーと交換します。
  5. データベースでストアドプロシージャを実行します。

Webアプリに管理ツールページがあります。私がやりたいのは、そのプロセスを開始するボタンをそのページに配置し(WebアプリケーションへのAJAX呼び出しを介して)、プロセスが開始されたことをユーザーに通知することです。プロセス全体が完了するまでに約1時間かかるため、AJAX呼び出しを1時間実行してから、プロセスが終了したことをユーザーに通知するページに戻ることはできません。

非同期で行う必要があります。プロセスを開始する必要があります。開始されると、プロセスが開始されたことをユーザーに通知します。その後、アプリケーションはプロセスの各ステップを待機し続け、終了するまで次のステップを呼び出します。これを実現するためのMVC4のコードはどのように見えますか?私はMSDNのチュートリアルを見てきましたがasyncawait少し混乱しています。

4

1 に答える 1

0

Websokets (または古いブラウザーをサポートする必要がある場合は長いポーリング) を確認することをお勧めします。すべての複雑なスタッフを処理するSignalRという非常に優れたライブラリがあります。クライアント ブラウザでサポートされている場合は Websocket を使用し、サポートされていない場合は自動的にロング ポーリングに切り替えます。優れたドキュメントがあり、インターネット上に多くのサンプルがあります。

于 2013-03-13T16:35:05.743 に答える