Domanda

È realistico utilizzare la classe C # .Net HttpListener come base per un server di produzione calibro web?

Il servizio web http ho bisogno di ospitare non contiene aspx o file statici. Tutte le risposte HTTP sono dinamiche e generato nel codice C # che viene richiamato tramite alcuni istruzioni switch che ispezionano un formato URL riposante.

Il mio pensiero è che IIS è in realtà un wrapper in modalità utente intorno al modulo o / s kernel HTTP-SYS di Windows che fa tutto la gestione di rete pesanti e così è HttpListener.

Ho già un server di base in esecuzione multi-threaded web, che è eccellente per lo sviluppo, perché si avvia in modalità di debug in un'istanza, ora sto pensando ho bisogno l'eccessivo di IIS per la produzione. Un ingombro di memoria insufficiente è un'altra attrazione.

È stato utile?

Soluzione

Hai due scelte gravi qui. E no, la codifica di un proprio server Web con HttpListener non è la produzione di qualità.

1) Usare IIS. Ha una tonnellata di caratteristiche per la sicurezza, le prestazioni, e forse più importante, gestibilità , che avrebbe dovuto reinventare se stessi. Come amministrazione remota, la registrazione, la protezione di Windows integrato, ecc

2) Uso WCF e creare un ServiceHost per ospitare i file. Poi si dovrà implementare i propri servizi e di trovare un modo per gestire la loro vita. Si può fare, ma ancora una volta, se stai parlando chiamate RESTful Web, IIS è davvero la strada da percorrere.

a rotazione manuale del proprio dovrebbe essere evitato. IIS è cambiata molto negli ultimi 10 anni. E 'in alcun modo più un grande server monolitico. Hanno modularizzati quasi tutto, soprattutto in Windows 2008, in modo da ottenere un sistema snello e veloce.

Altri suggerimenti

Bene, come si è detto -. Tenta di utilizzare IIS in un primo momento

HttpListener non è affatto male - quel server ascoltatore sta più veloce gestito si può avere ora (più veloce di TcpListener e più veloce di classe Socket). Ed è in realtà lo stesso core con IIS. Ma IIS ha un sacco di più cose.

Non posso dire IIS è monolite - utilizzo di hosting dimostrato che è diventato peggio in Win2008 in termini di stabilità e di gestione. Ma la soluzione fatta a mano può essere molto peggio. E anche non dimenticare - http.sys molto più personalizzabile di HttpListener. Cioè non si può fare streaming con HttpListener, ma si può fare con http.sys - su HttpListener Streaming

Ma se si avrà abbastanza potere come sviluppatore -. Si può provare a redigere proprio involucro http.sys e che è meglio approccio di scrivere proprio server web in Windows

Spazzatura, rotolare il proprio. L'architettura permette. Fate attenzione però ci sono alcuni strani comportamenti della classe. La chiusura è giù un paio di volte in un servizio NT rende flakey come un sacchetto di pasta sfoglia.

Se si esegue su console, senza problemi di sorta, eseguirlo asincrona e tutto dovrebbe essere bene, tuttavia, avviare e arrestare l'aggeggio. questo è un problema diverso, che attualmente sto lottando con come nessun errore vengono prodotte dalla ermeticamente sigillato Microsoft classi.

Mi sento pitone venire su con un po 'pizzico di CherryPy

Se si scrive, allora dovrete mantenerla. Microsoft ha già scritto un web server -. Lo deve usare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top