2009-04-02 6 views
7

Meine Firma experimentiert mit dem Schreiben eines Proxy-Servers mit dem .NET Fx 3.5 und C#. Aus unserer research habe ich gelesen, dass HttpListener ist kein guter Kandidat für einen Proxy-Server, obwohl ich nicht sicher bin, warum.HTTP-Proxy-Server in C#

Wir arbeiten derzeit mit der , die unter anderem die Implementierung unserer eigenen Protokollierungs- und Leistungsindikatoren beinhaltet. Wenn Sie HttpListener verwenden, wird Http.sys umbrochen, wodurch wir einige der Leistungsstatistiken erhalten, die wir sofort benötigen.

Warum ist HttpListener ein schlechter Kandidat für HTTP-Proxy-Arbeit?

(Und ja, wir erwägen, Squid 3.1 durch das Schreiben oder einen ICAP-Server als auch die Konfiguration.)

Antwort

4

Httplistener ist in .NET für einen Server einfache HTTP einen wichtigen Baustein zur Verfügung zu stellen. Wo einfach keine hohen Operationsraten unterstützt werden.

Normalerweise müssen HTTP-Proxys einen sehr geringen Overhead haben, um viele gleichzeitige Verbindungen zu unterstützen und die Proxy-Funktion (die vom Proxy-Typ abhängt) bereitzustellen.

Proxies sind in RFC 2616 §8.1.3 beschrieben) und liefert sofort ein Element, dass (wenn ich verstehe, Httplistener korrekt) nicht möglich ist:

MUSS

Der Proxy-Server persistente Verbindungen Signal separat mit seinen Kunden und dem Ursprungsserver (oder andere Proxy-Server), mit denen eine Verbindung hergestellt wird. Jede permanente Verbindung gilt nur für eine Transportverbindung.

+1

Verwendet IIS http.sys nicht? Ich folge nicht, was ist, macht es schlecht für die Verwendung als Proxy-Server –

+0

Http.sys ist zum Schreiben von HTTP-Servern, ein HTTP-Proxy ist nicht nur ein HTTP-Server, der einen anderen anruft. Der Hinweis über HttpListener für "einfache" Fälle stammt von MSDN (IIRC). – Richard

2

Sie könnten auch denken, dass der Windows-Port von Nginx vor ein paar Tagen veröffentlicht wurde. Viele Seiten, die Tintenfisch und Lack Erfahrung haben, sind sehr erfreut nach der Konvertierung zu Nginx. Dann gibt es immer, was MS ISA Server in diesen Tagen nennt.

Gehen Sie weg, um den Mentalis-Code jetzt zu betrachten: D