10

いくつかの操作を公開するWCFサービスを構築していますが、HTTPSエンドポイントが必要なため、IISで実行されます。ほとんどの操作は数秒以内に実行されます。ただし、これらの操作の1つまたは2つには、5〜90分かかります。

このサービスの主な利用者は、ASP.NETMVCアプリケーションです。これを処理する正しい方法は何ですか?

タイムアウトをジャッキアップして、いくつかのajax呼び出しを行う必要がありますか?データベースにテーブルを追加し、長時間実行される操作でこのデータベースを更新し、Webインターフェイスでこのテーブルを毎分ポーリングする必要がありますか?これについて一般的に受け入れられているベストプラクティスが(ある場合)何であるかはわかりません。

4

2 に答える 2

1

私は自分のシニアプロジェクトに似たようなものを書きました。基本的にはジョブスケジューリングフレームワークです。

  1. 「ジョブ」の「ステータス」をデータベースに保存する方法を選択しました。
  2. WCFクライアント(プロキシ)を実装するマネージャーWindowsサービスを作成しました
  3. 「ワーカーホスト」を実装するWCFサービスを作成しました。

マネージャーサービスはデータベースからキューを読み取り、すべての「ワーカーホスト」に作業を渡します。UIをワーカーホストと直接通信させるのではなく、Windowsサービスにこのタスクを実行させた理由は、プロセス全体をさらに細かく制御できるためです。

ワーカーホストから「ネットワークケーブルを抜く」というアイデアが気に入らなかったので、この特定のジョブからステータスの更新を二度と取得することはありませんでした。そのため、Windowsサービスを使用すると、WCFワーカーホストの進行状況を常に監視でき、接続エラーが発生した場合(または予期しない何かが発生した場合)、ステータスを失敗に更新できます。したがって、孤立したジョブはありません。

于 2012-06-18T17:35:17.910 に答える
0

これを見てください

WCFの長期実行操作 他のオプションもありますが、それらはほぼ同じです。次のリンクの1つとして、いくつかのプッシュ通知(データが返されないと想定)を考え出すこともできます。

WCFプッシュ

于 2012-06-18T17:32:10.900 に答える