現在、.NET 4.5 と 4.0 で WPF/WCF クライアント アプリケーションをテストしており、最終的に 4.5 をすべてのクライアント マシンに展開することを目指しています。WCF 部分は BasicHttpBinding/SOAP を使用します。
同じ条件 (Win7 など) で 2 つのクライアント バージョンをテストすると、SOAP サーバー エンドポイントへの「新しい TCP 接続」が 10 倍に増加しました。リモート サーバーに接続しているため、新しい TCP 接続を確立すると Web サービス呼び出しに大きな遅延が追加されるため、これは面倒です。
4.0 を使用する場合、以前にクライアントServicePointManager
設定を調整して TCP 接続の再利用を最大化し、これらの設定が 4.5 に適用されることを期待していました。
私のアプリケーションは通常、一度に 1 つの呼び出しを実行します。平均すると、おそらく 10 秒ごとに、数分ごとに 10 の同時呼び出しのバーストが発生します。
変更ログを確認しましたが、.NET のこの部分に加えられた修正/変更への参照が見つかりません。ここで何が起こっているのか、誰かに光を当てることができますか?
ServicePointManager.UseNagleAlgorithm = true;
ServicePointManager.Expect100Continue = false;
ServicePointManager.DefaultConnectionLimit = 50;
ServicePointManager.MaxServicePointIdleTime = 10000;
Binding binding = new BasicHttpBinding
{
SendTimeout = TimeSpan.FromSeconds(_settings.SendTimeout),
ReceiveTimeout = TimeSpan.FromSeconds(_settings.SendTimeout),
MaxReceivedMessageSize = 1024 * 1024 * 10,
MaxBufferSize = 1024 * 1024 * 10,
MaxBufferPoolSize = 1024 * 1024 * 100,
Security =
{
Mode = BasicHttpSecurityMode.TransportCredentialOnly,
Message = { ClientCredentialType = BasicHttpMessageCredentialType.UserName },
Transport = { ClientCredentialType = HttpClientCredentialType.Basic },
},
};