xmlクエリを送信してxml応答を受け取るバックエンドシステムに接続するtcpclientがあります。TcpClientを同期ブロッキングモードで再利用するにはどうすればよいですか?
バックエンドでは、クエリを実行する前にクライアントのログオンと環境設定を行う必要があります。これは高価な操作であるため、tcpclientを作成して、繰り返しクエリを実行するためには開いたままにしておくことが理にかなっています。
私は、多くの接続を処理するために最適化されていると言いますが、パフォーマンス上の理由から、多数のtcpclientsを接続したいと考えています。
クエリは、何千ものアイテムを含むリスト形式です。
リストから同時に多数のリクエストを実行できるように、再利用可能な接続されたtcpclientのグループを作成するにはどうすればよいですか(この例ではどのパターンがこのシナリオに適していますか?からベストプラクティスを学ぶ?
現在、接続とログオンプロセスをカプセル化する単一のサービスを使用して、1つずつ実行します。あなたが必要なもの
QueryService service = new QueryService(server, port, user, pass, params, app);
foreach(var item in queries)
{
service.ExecuteRequest(item);
}
service.Disconnect();
並列foreachループ内でtcp clientのasyncメソッドを使用しようとしましたか? –
タイトルで説明したように、tcpclientは同期ブロッキングモードです。各クエリは、バックエンドが応答を送信する前に終了シーケンスを送信する必要があります。基本的なソケットでの同期の読み取りと書き込みができるかどうか分かりません。 –