У меня есть tcpclient, который подключается к бэкэнд-системе, отправляя запросы xml и получая ответы xml.Как повторно использовать TcpClients в режиме синхронной блокировки?
Бэкэнд требует, чтобы клиент выполнил вход в систему и установил некоторые параметры среды перед тем, как будет выполнено какое-либо запрос. Это дорогостоящая операция, поэтому имеет смысл создать tcpclient и сохранить его для повторных запросов.
Бэкэнд, который, как мне сказали, оптимизирован для обработки многих соединений и по соображениям производительности, я хотел бы иметь многочисленные подключения tcpclients.
Запросы в форме списка, который содержит тысячи единиц.
Мой вопрос в том, как лучше создать группу подключаемых tcpclients, которые можно использовать повторно, поэтому я могу выполнить несколько одновременных запросов из списка (например, по 10 за раз), какой шаблон подходит для этого сценария, и есть ли какие-либо примеры, которые я могу научиться лучшей практике?
В настоящее время он просто выполняет их один за другим с использованием единой службы, которая инкапсулирует процесс соединения и входа в систему.
QueryService service = new QueryService(server, port, user, pass, params, app);
foreach(var item in queries)
{
service.ExecuteRequest(item);
}
service.Disconnect();
Вы пытались использовать метод async для клиента tcp в параллельном цикле foreach? –
Как упоминалось в заголовке, tcpclient находится в режиме синхронной блокировки. Каждый запрос должен отправить конечную последовательность до того, как бэкэнд отправит ответ. Я не уверен, могу ли я сделать aync, чтобы читать и записывать в базовые сокеты? –