
データベース アクセスのために Web サービス メソッドを呼び出す Windows アプリケーションがあります。IIS 上の WCF サービスに対して、長時間 (15 秒以上) の非同期 Web サービス呼び出しを行うケースが見つかりました。その実行中に UI が他のブロックする (古いコード) Web サービス呼び出しを行うと、最初の非同期呼び出しが完了するまで、それらの追加の呼び出しはブロックされます。
これは、UI と Web サービスの両方が IIS Express を使用して Visual Studio で実行されている場合には発生しません。ブロッキング呼び出しは高速であり、長い非同期呼び出しが完了するずっと前に、そのすべての処理が完了します。
すべての Web サービスには次のものがあります。
<serviceThrottling
maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />
また、どこでも maxConnections="500" です。
IIS では、これらの同時 Web サービス呼び出しを IIS Express と同じように同時に処理したいと考えています。
...
理解を深めるために、この手順を説明します。まず、オブジェクトを検索します。検索では、条件を満たす上位 50 件 (既定) のアイテムが返されます。同時に、同じクエリで count(*) の非同期呼び出しが行われます。count クエリには非常に長い時間がかかることがあります。ユーザーは、合計件数を知りたい場合もあると主張しますが、通常は、件数が返されるずっと前に結果リストでオブジェクトを開くことができるようにしたいと考えています。オブジェクトを開くときに、同期 Web サービス呼び出しが役立ちます。以前は、検索結果と件数はすべて同じ Web サービス メソッドの一部でした。