Стоит ли использовать асинхронные вызовы?

У меня есть приложение на C #, которое читает таблицу из примерно 1500 URL-адресов сайтов клиентов, которые работают в компании с момента нашего основания. По сути, я запускаю whois-запросы по этим URL-адресам и смотрю, являются ли они по-прежнему клиентом или нет. Приложение работает, но его выполнение занимает около часа. Было бы лучше использовать async whois-запросы и сколько примерно времени я мог бы сэкономить. Вот пример блока кода запроса whois, который я использую.

Также, если у кого-то есть советы о том, как улучшить этот код или запускать асинхронные команды, не могли бы вы помочь мне, поскольку я всего лишь стажер. Спасибо

string whoisServer = "whois.markmonitor.com";
    string data;
    try
    {
        TcpClient objTCPC = new TcpClient(whoisServer, 43);
        string strDomain = domainName + "\r\n";
        byte[] arrDomain = Encoding.ASCII.GetBytes(strDomain);

        Stream objStream = objTCPC.GetStream();
        objStream.Write(arrDomain, 0, strDomain.Length);
        StreamReader objSR = new StreamReader(objTCPC.GetStream(),
        Encoding.ASCII);
        //return objSR.ReadLine();
        //return (Regex.Replace(objSR.ReadToEnd(),"\n","<br>")).ToString();
        using (StreamReader reader = new StreamReader(objTCPC.GetStream(), Encoding.ASCII))
        {
            data = (reader.ReadToEnd());
        }
        //test.Add(objSR.ReadLine());
        objTCPC.Close();
    }
    catch
    {
        data = "Not Found";
    }
    return data;

person Tommy Cawley    schedule 07.07.2014    source источник


Ответы (1)


Что ж, краткий ответ - конечно, да.

Поскольку вы выполняете несколько полностью независимых поисков, у вас есть все, что можно получить, выполняя их параллельно и асинхронно.

Есть несколько способов сделать это. Параметры зависят от того, в какой версии .net вы используете.

Как вы догадались, примеров много.
Посмотрите их прямо здесь, на SO.

Доступные параллельные технологии в .Net
Многопоточная обработка файлов с помощью .NET
Когда использовать цикл Parallel.ForEach вместо обычного цикла foreach?

person Mike M    schedule 07.07.2014
comment
Но серверы whois накладывают ограничение на скорость, поэтому выполнение слишком большого количества запросов за короткий промежуток времени может поместить вас в черный список ... - person Patrick Mevzek; 03.01.2018