2009-04-02 31 views
7

La mia azienda sta sperimentando la scrittura di un server proxy utilizzando .NET Fx 3.5 e C#. Dal nostro research ho letto che HttpListener non è un buon candidato per un server proxy anche se non sono sicuro del perché.Server proxy HTTP in C#

Attualmente stiamo lavorando con lo Mentalis proxy example source code, sebbene ciò comporterà, tra le altre cose, l'implementazione dei nostri contatori di registrazione e prestazioni. Usando HttpListener si avvolgerà Http.sys che ci fornirà alcune delle statistiche sulle prestazioni che richiediamo fuori dalla scatola.

Quindi perché HttpListener è un candidato non valido per il proxy HTTP?

(E sì che stiamo considerando Squid 3.1 scrivendo o la configurazione di un server ICAP pure.)

risposta

4

HttpListener è in .NET per fornire un importante blocco di costruzione per un server HTTP semplice. Dove semplice include non sostenere alti tassi di funzionamento.

In genere i proxy HTTP devono avere un sovraccarico molto basso per supportare molte connessioni simultanee e fornire la funzione del proxy (che dipende dal tipo di proxy).

proxy sono dettagliati in RFC 2616 §8.1.3) e che fornisce subito un elemento che (se ho capito HttpListener correttamente) non è possibile:

Il server proxy deve segnalare le connessioni persistenti separatamente con i propri clienti ed i server di origine (o altri server proxy) a cui si connette. Ogni connessione persistente si applica a un solo collegamento di trasporto.

+1

Vuol non utilizzare IIS http.sys? Non sto seguendo ciò che lo rende cattivo per l'utilizzo come server proxy –

+0

Http.sys è per la scrittura di server HTTP, un proxy HTTP non è solo un server HTTP che ne chiama un altro. La nota su HttpListener che si riferisce a casi "semplici" è da MSDN (IIRC). – Richard

2

Si potrebbe anche considerare che la porta Windows di nginx è stata rilasciata pochi giorni fa. Molti siti che hanno esperienza di calamari e vernici sono molto soddisfatti dopo la conversione in nginx. Quindi c'è sempre quello che MS sta chiamando ISA server in questi giorni.

andato a guardare il codice Mentalis ora: D