WCFでは、バインディング設定maxConnectionsとServiceBehaviors serviceThrottling設定(maxConcurrentCalls、maxConcurrentInstances、maxConcurrentSessions)の違いは何ですか?
WCFサービスをセットアップしようとしていますが、接続を制限するためにそれらが互いにどのように機能するのか正確にはわかりません。
WCFでは、バインディング設定maxConnectionsとServiceBehaviors serviceThrottling設定(maxConcurrentCalls、maxConcurrentInstances、maxConcurrentSessions)の違いは何ですか?
WCFサービスをセットアップしようとしていますが、接続を制限するためにそれらが互いにどのように機能するのか正確にはわかりません。
考慮すべき重要な点が2つあります。
serviceThrottling
動作は、サーバーでサポートされる同時呼び出し、インスタンス、およびセッションの数を決定するサービス/サーバー側の設定です。これは、バインディングやサービスエンドポイントとは無関係であり、サービス全体の設定です。これにより、特定のサービスが処理できる同時リクエスト(および/またはセッション)の数を微調整できます。これは、サーバーの「電力」、RAM、CPU、その他多くの要因によって異なります。これらの値は、サーバーが「過負荷」になり、大量の要求(誤ってまたは悪意を持って)によって応答しなくなるのを防ぐために、デフォルトではかなり低く保たれています。
バインディングのmaxConnections
設定は(およびさまざまなAzure指向のバインディングnetTcpBinding
のような「いとこ」)に固有であり、接続プールと関係があります。ADO.NETデータベース接続がプールされるのと同じように、サーバーへのTCP / IP接続をプールして再利用することで、それらを破棄して再作成する必要があるオーバーヘッドを減らすことができます。これは主にクライアント側の設定です(ただし、サーバー側にも影響します)。また、これは(およびいとこ、すべてTCP / IPに基づく)に固有であり、他のどのバインディングにも存在しません。 。netNamedPipe
net***Relay
netTcpBinding