1

シナリオ: WCF サービスは、クライアントから XDocument を受け取り、それを処理して、MS SQL テーブルに行を挿入します。

複数のクライアントが同時に WCF サービスを呼び出している可能性があります。通常、通話にはそれほど時間はかかりません (数秒)。

ここで、SQL テーブルをポーリングし、別の一連のプロセスを非同期で実行する必要があります。2 番目のプロセスは、コールバックする必要はなく、WCF とはまったく関係ありません。テーブルを読み取って一連のメソッドを実行し、場合によっては Web サービス呼び出し (もちろんレコードがある場合) を実行する必要がありますが、それだけです。上記のサービスを使用する WCF サービス クライアントは、これを認識しておらず、気にしません。

StackOverflow でこの質問について読んだことがあります。また、Windows サービスが理想的であることも知っていますが、この WCF サービスは共有ホスティング (discountasp など) でホストされるため、Windows サービスのインストールはオプションではありません (私の知る限りでは)。

アーキテクチャが固定されている場合 (IE: テーブルを変更することはできません。レガシー形式に由来するものでも、WCF サービスのメカニズムを変更することもできません)、このテーブルをポーリング/処理するための提案は何ですか?

10分ごとにチェックする必要があると思います。インスタントである必要はありません。

ありがとう。

4

3 に答える 3

3

浮気。このプロセスを別の WCF サービスとして公開し、スケジュールされた時間に制御下にあるボックスから go コマンドを起動します。

WCF でバックグラウンド スレッドを起動したり、キャッシュの有効期限を貧しい人のスケジューラとして使用したりできますが、Web サイトで次のヒットが発生し、アプリ プールが再びスピンアップするまでアプリ プールがリサイクルされると、それらは停止します。少なくとも、制御するマシンからリクエストを発行するということは、その方向にリクエストを送信したため、アプリケーション プールが約 10 分ごとに再起動されることがわかっていることを意味します。

于 2009-03-23T14:58:08.857 に答える
0

アプリケーションプールを「常にアクティブ」にして、スレッドで必要なことを何でも行います。

于 2011-11-21T18:49:47.080 に答える