Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Ушел смотреть код Mentalis :D

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top