.NET の TcpClient を使用して繰り返し TCP 接続を確立すると、アプリケーションのパフォーマンスにどの程度影響するか疑問に思っています。
私が取り組んでいるアプリケーションは、元々、クライアントとサーバーを同じ LAN ネットワーク上に置くように設計されたクライアント/サーバー アプリケーションでした。
クライアントの ODBC データベース接続を削除し、データベースから読み取った後に Protocol Buffers を使用してバイナリ データを提供するカスタム サーバーを使用しています。
このコードは、SQL ステートメントごとにサーバーへの接続を確立し、シリアル化された結果が DataTable に似た構造で返されます。
当社のネットワークでは、アプリケーションは非常に高速ですが、リモート クライアントでのテストを開始したところ、遅延の問題が発生しています。サーバーは東海岸にあり、リモート クライアントは西海岸にあります。
SQL ステートメントごとに接続を開くオーバーヘッドが、実際には離れたクライアントのボトルネックになっているのではないかと思いますが、これについては確信が持てません。
私の質問: TCP 接続を繰り返し開くことはパフォーマンスのボトルネックですか? 永続的な接続はパフォーマンスを向上させますか? また、永続的な接続に移行した場合、どのような問題が発生するでしょうか?