2010-12-07 7 views
1

この質問は、ASP.NETによって私に課せられた制限についてです(スクリプトタイムアウトなど)。asp.net無限ループ - これはできますか?

私はASP.NETで動作しているサービスを持っており、監視用のサービスを作成したいと思います。

メインサービスのデータはデータベースにあります。
私は、リモートクライアントによって行われたHTTP要求によって発行されたループ内で、1秒間隔でデータベースにクエリを照会させることを考えていました。
この監視の実際のサービスは、クライアントのhttp要求によって行われます。これはスクリプトループ(C#で書かれています)を行い、新しいデータが検出されるとそのデータをその1つのループ要求出力バッファループを終了して、要求を終了します。
クライアントは更新を継続するために新しい要求を発行する必要があります。

これは実際にはTCPとまったく同じです(まさにWindows IOCPのようなものです)。データのサービスを要求し、それを待ちます。それが到着したら、別の要求を発します。

私の実際の質問はです。これまでにやったことはありますか?どうだった?私はIIS/ASP.NETフレームワークによって課されるいくつかの(設定可能な)制限によって制限されていますか? このような状況で私の限界は何ですか、または何が複雑すぎることなく良い選択肢ですか?

私は一度に多くのそのような監視要求を期待していないことに注意してください。多分数十。
しかし、このような同時モニタリング要求が10個あると、10個のスレッドがビジー状態になります。 IIS /パフォーマンスを傷つけることはできますか? IISはどのように10のビジースレッドを処理しますか?もっとそれを発行するのだろうか?限界は何ですか?これは私が考えることができる限界のほんの一例です。

答えて

1

私はあなたがこの状況での主な懸念はタイムアウトであると思っています。これはかなり設定可能です。しかし、私はそれが間違った解決策であると考えています。バックグラウンド・サービスを利用し、定期的に定期的に実行し、監視データをデータ・ストアに書き込む方がよいでしょう。

モニターデータが利用可能な場合にページに何かを表示したい場合 - ページロード・クエリ・モニタリング・サービスでそれを実装し、いくつかのモニタリング・イベントが使用可能な場合はレンダリングします。

IMOこれは、長時間実行されているリクエストよりもはるかに良い解決策になります。

+0

感謝。監視サービスのためのサービスを提案していますか? – Poni

+0

それはサービスかもしれません、それはスケジュールされたコンソールアプリ - 実装の問題ですが、基本的には - はい、私は監視サービスを作成し、ASP.NETページを終了するには、ユーザー。このようにすれば、よりクリーンなアーキテクチャを得ることができます。監視ログを表示するユーザの数が限られているだけでなく、非常に安価なオペレーションが可能です。 – Hassan

+0

ここで私の欠点があります。クライアントからの頻繁なHTTPリクエストについては何も表示せず、新しいものが何も生成されていない場合は何も表示しません。私は、新しいデータ/更新が生成されたときにhttp接続が既にそのクライアントで開かれているため、即座にサービスが提供される、長時間にわたるhttp要求について話しています。 – Poni

0

私はときにアプリケーションプールがクラッシュし何が起こる

  1. ...以下の理由でASP.NETを使用してサービスを監視するための非常に良いアイデアではないだろうと思いますか?

  2. IISResetを実行する場合はどうなりますか?どのアプリケーションが最初に起動するのですか?メインアプリケーション、または監視アプリケーションですか?

  3. 負荷のために監視アプリケーションがハングアップする場合はどうなりますか?

  4. メインサービスですでに負荷が高い場合はどうなりますか?1秒ごとにそれを監視せず、プライマリサービスとIISの負荷を増やすでしょうか?あなたのアイデアを得る

...返信ハッサンため

+0

私は両方を1つの "IISアプリケーションドメイン"に入れて、両方がほぼ同じ時間に始まるようにします。それは重要ではありません。また、少なくとも私が思うことを複雑にする前に、それを試してみる必要があります。私は、各監視クライアントが一度に1つの要求を使用していることを確認し、その数を制限する共有結合リストを管理することができます.....少なくとも、開始。 – Poni

関連する問題