Я нашел другой вопрос , в котором задавался такой же тип функциональности, но этому вопросу более 2 лет, поэтому мне было интересно, видел ли кто-нибудь что-либо с тех пор.
Я в основном написал свой собственный асинхронный клиент http / socket , используя стандартные сокеты .NET. Я поддерживаю пул из 1024 сокетов, и у меня 128 «служебных» потоков, использующих пул сокетов для загрузки веб-страниц из Интернета со скоростью до 371 страницы в секунду (только что протестировал сегодня на одном сервере Amazon EC2). Я также сделал еще один асинхронный HTTP-клиент, который использует HttpWebRequest
для асинхронной загрузки веб-страниц, но он ОЧЕНЬ медленнее: моя пропускная способность в среднем составляет около 50 страниц в секунду (также тестируется на Amazon EC2) с той же настройкой: 1024 пула HttpWebRequest
s и 128 "служебных" тем.
Естественно, предоставление поддержки протокола HTTP займет немного больше вычислительной мощности и памяти. Я надеюсь, что с сервером Extra Large EC2 от Amazon меня не будут ограничивать вычислительная мощность / память, а только пропускная способность сети (что имело место до сих пор).
Примером машин, которые я использую, является очень большой экземпляр Amazon High-CPU:
- 7 ГБ памяти
- 20 вычислительных блоков EC2 (8 виртуальных ядер по 2,5 вычислительных блока EC2 каждое)
- 1690 ГБ хранилища экземпляров
- 64-битная платформа
- Производительность ввода / вывода: высокая
- Имя API: c1.xlarge
Я могу написать свою собственную обработку HTTP, которая соответствует протоколу HTTP, но это избавит меня от ТОННЫ работы, боли и страданий, если будет готовое и надежное решение.
Мне нужны как минимум следующие функции:
- Создание запросов HTTP HEAD / GET (и, возможно, POST)
- Разбор ответа HTTP из двоичного потока
- Поддерживает куки
- Лицензия LGP (LGPL)
Кто-нибудь знает такие решения?