HTTP прокси-сервер в C # - PullRequest
       22

HTTP прокси-сервер в C #

7 голосов
/ 02 апреля 2009

Моя компания экспериментирует с написанием прокси-сервера с использованием .NET Fx 3.5 и C #. Из нашего исследования я прочитал, что HttpListener не является хорошим кандидатом для прокси-сервера, хотя я не уверен, почему.

В настоящее время мы работаем с исходным кодом примера прокси Mentalis , хотя это будет включать, среди прочего, реализацию наших собственных счетчиков журналирования и производительности. Использование HttpListener обернет Http.sys, что даст нам некоторые статистические данные о производительности, которые нам нужны из коробки.

Так почему же HttpListener является плохим кандидатом на работу прокси HTTP?

(И да, мы рассматриваем Squid 3.1, также написав или настроив сервер ICAP.)

Ответы [ 2 ]

4 голосов
/ 02 апреля 2009

HttpListener находится в .NET, чтобы обеспечить основной строительный блок для простого HTTP-сервера. Там, где просто, не поддерживается высокая скорость работы.

Обычно прокси-серверы HTTP должны иметь очень низкие издержки для поддержки множества одновременных соединений, а также для обеспечения функции прокси (которая зависит от типа прокси).

Прокси подробно описаны в RFC 2616 §8.1.3 ), и в нем сразу содержится один элемент, который (если я правильно понимаю HttpListener) невозможен:

Прокси-сервер ДОЛЖЕН сигнализировать о постоянных соединениях отдельно со своими клиентами и исходными серверами (или другими прокси-серверами), к которым он подключается. Каждое постоянное соединение применяется только к одной транспортной линии.

2 голосов
/ 10 мая 2009

Вы также можете подумать, что порт windows nginx был освобожден несколько дней назад. Многие сайты, которые имеют опыт работы с squid и лаком, очень рады после перехода на nginx. Тогда всегда есть то, что MS называет ISA-сервером в эти дни.

Ушел, чтобы посмотреть код Mentalis сейчас: D

...