この質問は、ASP.NETによって私に課せられた制限についてです(スクリプトタイムアウトなど)。asp.net無限ループ - これはできますか?
私はASP.NETで動作しているサービスを持っており、監視用のサービスを作成したいと思います。
メインサービスのデータはデータベースにあります。
私は、リモートクライアントによって行われたHTTP要求によって発行されたループ内で、1秒間隔でデータベースにクエリを照会させることを考えていました。
この監視の実際のサービスは、クライアントのhttp要求によって行われます。これはスクリプトループ(C#で書かれています)を行い、新しいデータが検出されるとそのデータをその1つのループ要求出力バッファループを終了して、要求を終了します。
クライアントは更新を継続するために新しい要求を発行する必要があります。
これは実際にはTCPとまったく同じです(まさにWindows IOCPのようなものです)。データのサービスを要求し、それを待ちます。それが到着したら、別の要求を発します。
私の実際の質問はです。これまでにやったことはありますか?どうだった?私はIIS/ASP.NETフレームワークによって課されるいくつかの(設定可能な)制限によって制限されていますか? このような状況で私の限界は何ですか、、または何が複雑すぎることなく良い選択肢ですか??
私は一度に多くのそのような監視要求を期待していないことに注意してください。多分数十。
しかし、このような同時モニタリング要求が10個あると、10個のスレッドがビジー状態になります。 IIS /パフォーマンスを傷つけることはできますか? IISはどのように10のビジースレッドを処理しますか?もっとそれを発行するのだろうか?限界は何ですか?これは私が考えることができる限界のほんの一例です。
感謝。監視サービスのためのサービスを提案していますか? – Poni
それはサービスかもしれません、それはスケジュールされたコンソールアプリ - 実装の問題ですが、基本的には - はい、私は監視サービスを作成し、ASP.NETページを終了するには、ユーザー。このようにすれば、よりクリーンなアーキテクチャを得ることができます。監視ログを表示するユーザの数が限られているだけでなく、非常に安価なオペレーションが可能です。 – Hassan
ここで私の欠点があります。クライアントからの頻繁なHTTPリクエストについては何も表示せず、新しいものが何も生成されていない場合は何も表示しません。私は、新しいデータ/更新が生成されたときにhttp接続が既にそのクライアントで開かれているため、即座にサービスが提供される、長時間にわたるhttp要求について話しています。 – Poni