WinInet pipelining
От: i3F  
Дата: 13.11.13 23:46
Оценка:
Доброго времени суток.
Нужно быстро опрашивать HTTPS сервер.
Используется метод POST, в каждом запросе на сервер передается информация, разные идентификаторы, в том числе порядковый номер запроса, так что запросы должны приходить на сервер в строго определенной последовательности.
Нужно максимально сократить время получения всех ответов.
Использую MS Windows, WinInet, VC++.


1) Для ускорения обмена информацией хочется отправлять по несколько запросов сразу (то следующий запрос отправляется не дожидаясь получения ответа на предыдущий запрос).
Кажется, это опция pipelining. Изучаю, но пока не понял, как её использовать с WinInet.
Подскажите, пожалуйста.

2) Что можете посоветовать для ускорения обмена информацией?

Спасибо заранее.
Re: WinInet pipelining
От: Mиxa Украина  
Дата: 14.11.13 11:23
Оценка: 2 (1)
Здравствуйте, i3F, Вы писали:

i3F>1) Для ускорения обмена информацией хочется отправлять по несколько запросов сразу (то следующий запрос отправляется не дожидаясь получения ответа на предыдущий запрос).

i3F>Кажется, это опция pipelining. Изучаю, но пока не понял, как её использовать с WinInet.

Беглый гуглинг говорит что ни WinInet ни WinHTTP не поддерживают pipelining.
Используй или .NET System.Net.HttpWebRequest, или libcurl.
Re[2]: WinInet pipelining
От: i3F  
Дата: 14.11.13 11:35
Оценка:
Здравствуйте, Mиxa, Вы писали:

M>Здравствуйте, i3F, Вы писали:


i3F>>1) Для ускорения обмена информацией хочется отправлять по несколько запросов сразу (то следующий запрос отправляется не дожидаясь получения ответа на предыдущий запрос).

i3F>>Кажется, это опция pipelining. Изучаю, но пока не понял, как её использовать с WinInet.

M>Беглый гуглинг говорит что ни WinInet ни WinHTTP не поддерживают pipelining.

M>Используй или .NET System.Net.HttpWebRequest, или libcurl.

Выяснил, что асинхронные запросы wininet поддерживает.
Технология pipelining древняя, так что скорее всего поддержка со стороны wininet есть.
Просто термин другой используют. "ASYNC-чего-то там"
Re[3]: WinInet pipelining
От: Mиxa Украина  
Дата: 14.11.13 13:23
Оценка: 2 (1)
Здравствуйте, i3F, Вы писали:

i3F>Выяснил, что асинхронные запросы wininet поддерживает.

i3F>Технология pipelining древняя, так что скорее всего поддержка со стороны wininet есть.
i3F>Просто термин другой используют. "ASYNC-чего-то там"

Асинхронные запросы и pipelining — это совсем разные вещи. Асинхронно или блокирующе, пока не закончился один запрос, второй по тому же соединению не пойдет без pipelining.
Раз уж так хочется использовать WinXXX, то лучше используй WinHTTP. Открывай N параллельных соединений и в них последовательно отсылай запросы.
Re[4]: WinInet pipelining
От: i3F  
Дата: 14.11.13 13:36
Оценка:
M>Асинхронные запросы и pipelining — это совсем разные вещи. Асинхронно или блокирующе, пока не закончился один запрос, второй по тому же соединению не пойдет без pipelining.
Спасибо.

M>Раз уж так хочется использовать WinXXX,

Хочется избежать .net, это не знакомая мне технология.
Годится любая технология доступная под WinAPI + C++.

M>... то лучше используй WinHTTP. Открывай N параллельных соединений и в них последовательно отсылай запросы.

Принимающая сторона получит запросы в правильном порядке?
Re[5]: WinInet pipelining
От: Mиxa Украина  
Дата: 14.11.13 13:53
Оценка: 2 (1)
Здравствуйте, i3F, Вы писали:

M>>... то лучше используй WinHTTP. Открывай N параллельных соединений и в них последовательно отсылай запросы.

i3F>Принимающая сторона получит запросы в правильном порядке?

Нет, правильный порядок даст только одно соединение и pipelining.
Re[6]: WinInet pipelining
От: i3F  
Дата: 14.11.13 13:59
Оценка:
Здравствуйте, Mиxa, Вы писали:

M>Здравствуйте, i3F, Вы писали:


M>>>... то лучше используй WinHTTP. Открывай N параллельных соединений и в них последовательно отсылай запросы.

i3F>>Принимающая сторона получит запросы в правильном порядке?

M>Нет, правильный порядок даст только одно соединение и pipelining.


Можно самостоятельно реализовать HTTP поверх TCP/IP.
Самому писать заголовки в сокет и т.п.
Реализовывать HTTP целиком не нужно, только небольшую используемую часть (в том числе pipelining).
Но у меня тут HTTPS, как по вашему, это будет серьезным осложнением?
Re[7]: WinInet pipelining
От: Mиxa Украина  
Дата: 14.11.13 14:02
Оценка: 2 (1)
Здравствуйте, i3F, Вы писали:

i3F>Можно самостоятельно реализовать HTTP поверх TCP/IP.

i3F>Самому писать заголовки в сокет и т.п.
i3F>Реализовывать HTTP целиком не нужно, только небольшую используемую часть (в том числе pipelining).
i3F>Но у меня тут HTTPS, как по вашему, это будет серьезным осложнением?

Лучше использовать libcurl, там в режиме multi есть pipelining. Либа нормально под Windows компилируется.
Если вручную, то для https не обойтись без openssl.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.