Это дорого сделать поиск WHOIS с помощью TcpClient.Connect() в C#?
Клиент попросил нас выполнить динамический поиск whois на домашней странице их сайта ASP.NET, основываясь на IP-адресе пользователя, получающего доступ к сайту.
Реализация будет примерно такой, как описано здесь:
http://www.aspheute.com/english/20000825.asp
Однако я заметил, что этот код подключается к whois.networksolutions.com. Я думаю, что это может не очень хорошо масштабироваться, если мы инициируем соединение с этим удаленным сервером при каждой загрузке страницы.
Например, скажем, 1000 разных пользователей попадают на домашнюю страницу - это приведет к тому, что будет инициировано много подключений.
Есть мысли по этому поводу?
3 ответа
Да, это может занять много времени. Величина "дороговизны" действительно зависит от сетевого соединения между вашим сервером и удаленным сервером и времени отклика удаленного сервера. Вы можете рассмотреть возможность кэширования ответа, если ваши запросы не отличаются друг от друга (что, скорее всего, не относится к запросам домена, введенных конечными пользователями). Еще большая проблема заключается в том, что удаленный сервер может блокировать вас, если он видит слишком много подключений с одного IP-адреса.
Я мог бы спросить клиента, возможен ли обратный DNS... Таким образом, вы можете использовать возможности кэширования вашего DNS-сервера для уменьшения объема интернет-трафика. Если у вас нет внутреннего DNS, в этом случае вы будете использовать возможности кэширования DNS-сервера вашего интернет-провайдера.
Существует большая разница между whois и DNS, так что клиент сам решает, что ему нужно.
Чтобы ответить на ваш прямой вопрос, хотя... Может быть, вы могли бы создать какое-то кэширование для этих данных, чтобы уменьшить количество повторных поисков, которые вы должны выполнить для одного хоста, просматривающего различные страницы сайта?
Помимо кэширования, вы также можете захотеть, чтобы этот поиск был асинхронным, поэтому любая задержка не задерживает показ страницы.