2009-05-01 10 views
2

リクエストの「バースト」を受け取るASMX Webサービスをデバッグしています。すなわち、ウェブサービスが約1または2秒以内に100の非同期要求を受信する可能性が高い。各リクエストは処理に約1秒かかると思われます(これは期待されており、このパフォーマンスでは問題ありません)。ただし、重要なことは、各要求が順次処理され、並列処理が行われないことです。私は、Webサービスによって呼び出される外部コンポーネントのために、同時に要求を処理する必要はありません。 Webサービスが各応答を順番にしか処理しないようにする方法はありますか?リクエストを1つずつ処理するようにasmx Webサービスを強制する

私はmachine.configのmaxconnection属性を見ましたが、これは着信接続を抑制するアウトバウンド接続に対してのみ機能するようです。

この時点では、WCFへのリファクタリングはオプションではありません。

私たちはWin2003でIIS6を使用しています。

+0

@Alex:これらの回答のいずれかが役に立ちましたか?あなたは助けてくれた人たちにupvoteする必要があります。だから、この質問を読んでいる人は後でどちらが役に立つのか分かります。 –

+0

本当に。このシナリオでIIS6がどのように動作するか(または強制的に動作するようにする方法)の詳細を探しています。 この場合、プログラム上のソリューションは問題ありません。IIS 7にアップグレードすることはできません。 – Alex

+0

IISはこの問題とは関係ありません。 ASP.NETに要求を渡す以外は関与しません。 –

答えて

0

おそらく、リクエストを内部的にキューに入れ、1つずつ処理する必要がありますか?

あなたが許可される接続の制限を設定することができますIIS7でそれは(彼らもそれを必要とする場合)クライアントが結果をポーリングすることがありますが、あなたが望んでいたシーケンシャルパイプラインを取得したい...

+0

リクエストはすべてクライアントからのものです。私は、Webサービス側でキューイングのクラスを作成することを検討しましたが、キャッシュのリクエストには内部バッファが必要であると思っていました。 – Alex

+2

私はmsmqを見て、ワーカースレッド/プロセス経由でキューを処理することをお勧めします。 –

0

ウェブサイト。 IIS7を使用できますか?

+0

そして最大接続数がアクティブな間に到着する着信接続はどうなりますか?それらはIISによってキューに入れられますか、または拒否されますか? IIS7の使用が許可されているかどうかを確認します。 – Alex

+0

私が見つけたものから、余分なリクエストは空き接続があるまでhttp.sysキューに入れられます。ただし、これにより、クライアントアプリケーションがタイムアウトする可能性があります。 –

+0

これは私の望む動作とまったく同じです。この動作はIIS 7との関連性が高いのですか、それとも6でも起こりますか?私は問題ではないようにクライアントのタイムアウトを制御することができます。あなたはどこでこの情報を見つけましたか? – Alex

0

私が過去に行ったことは、使用していた外部リソースへのアクセスの周りにロック文を置くことです。私の場合、それはスレッドセーフであると主張されているアンマネージドコードの一部でしたが、実際にはCランタイムライブラリヒープは複数のスレッドから一度にアクセスされるとゴミ箱になります。

関連する問題