.NET の構成に関する一般的な提案

Watson™ Explorer Engine アプリケーションは通常の場合、使用中の Web サーバーに多数の URL をエンキューし、これを行うのに複数のスレッドがしばしば使用されます。複数の URL を同時にエンキューするために 2 つを超える並行スレッドを使用することは、単一のクライアントが所定の Web サーバーに対して持つ同時接続は 2 つまでとするという基本的な HTTP 1.1 仕様に矛盾します。(詳しくは、IETF RFC for HTTP 1.1 のセクション 8.1.4 を参照してください。)この制限を回避してパフォーマンスを向上させるには、この制限をユーザーが設定できるコードをアプリケーションに追加することにより、またはこれらのアプリケーション用の .NET プロジェクトに対する App.config ファイルを変更することにより、Watson Explorer Engine アプリケーションが Web サーバーに対して持つことができる接続の最大数を増やす必要があります。

例えば、C# アプリケーションでプログラマチックにこの制限を設定するには、コードに次のような行を追加します。

ServicePointManager.DefaultConnectionLimit = 40;

また、アプリケーションのコマンド・ラインまたは GUI オプションによって、この値を設定することもでき、この方法によれば、アプリケーションに適した最大接続数の値を見つけるための、アプリケーションおよびその実行環境のテストを簡素化することができます。

この値を .NET アプリケーションでプログラマチックに設定することについて詳しくは、「Managing Connections」などの .NET 資料またはオンラインの Microsoft リソースを参照してください。

App.config ファイル内の最大接続数を変更するには、プロジェクトの App.config ファイルを編集して <configuration> ノードを調べてください。ノードに <system.net> セクションが含まれていない場合、<configuration> ノードに以下のセクションを追加します。

<system.net>
  <connectionManagement>
    <add address="*" maxconnection="40" />
  </connectionManagement>
</system.net>

<system.net> セクションが既にある場合、単純に <connectionManagement> ノードをそのセクションに追加します。

この例に示す特定のセクションを追加すれば、任意のホスト上のアプリケーションとターゲット Web サーバーの間で最大 40 の同時接続が可能になります。<connectionManagement> セクションは複数の <add> エレメントを含むことができ、特定のサーバーのホスト名または IP アドレスを add エレメントの address 属性の値として指定することによって、そのサーバーへの接続数を制限できます。

注: このセクションの例に示す Web サーバーへの最大接続数に対する値 40 はサンプル値です。さまざまな最大接続数の値を使用して、Watson Explorer Engine アプリケーションをベンチマークし、アプリケーションが対話している Web サーバーに過大な負担をかけることなく SOAP および HTTP 要求に対して良好なパフォーマンスを提供する値を見つける必要があります。

Visual Studio でインターネット・アプリケーションを構成することについて詳しくは、Visual Studio の資料または『Configuring Internet Applications』などの Microsoft オンライン・リソースを参照してください。