Pergunta

É realista usar a classe C # .Net HttpListener como base para um servidor calibre produção web?

O serviço http web eu preciso anfitrião não contém ficheiros.aspx ou estáticos. Todas as respostas HTTP são dinâmicas e gerado em C # código que é invocado através de algumas declarações switch que inspecionar um formato url repousante.

Meu pensamento é que o IIS é realmente um invólucro de modo de usuário ao redor do Windows o / s HTTP-SYS kernel do módulo que faz todo o manuseio da rede pesados ??e por isso é HttpListener.

Eu já tenho um servidor em execução multithread web básica que é excelente para o desenvolvimento porque ele começa no modo de depuração em um exemplo, agora estou pensando que eu preciso o exagero do IIS para a produção. A pegada de memória baixa é outra atração.

Foi útil?

Solução

Você tem duas opções graves aqui. E não, codificação de seu próprio Web Server com HttpListener não é produção em série.

1) Use IIS. Ele tem uma tonelada de recursos para a segurança, o desempenho, e talvez mais importante, gerenciamento , que você teria que reinventar a si mesmo. Como a administração remota, registro, segurança integrada do Windows, etc.

2) Use WCF e criar um ServiceHost para hospedar seus arquivos. Então você terá que implementar seus próprios serviços e encontrar uma maneira de gerir as suas vidas. Você pode fazê-lo, mas, novamente, se você está falando chamadas RESTful Web, o IIS é realmente o caminho a percorrer.

manualmente seu próprio material circulante deve ser evitado. IIS mudou muito nos últimos 10 anos. É de nenhuma maneira um grande servidor monolítica mais. Eles modularizado quase tudo, especialmente no Windows 2008, de modo a obter um sistema enxuto e rápido.

Outras dicas

Bem, como foi dito -. Tente usar o IIS em primeiro lugar

HttpListener não é mau de todo - que é gerenciado mais rápido servidor ouvinte, você pode ter agora (mais rápido do que TcpListener e mais rápido do que classe Socket). E é realmente o mesmo núcleo que com o IIS. Mas IIS tem um monte de coisas mais.

Eu não posso dizer o IIS está monólito - Utilização hospedagem mostrado que tornou-se pior em Win2008 em termos de estabilidade e de gestão. Mas sua solução feitos à mão pode ser muito pior. E também não se esqueça - http.sys muito mais personalizável do que HttpListener. Ou seja, você não pode fazer streaming com HttpListener, mas você pode fazer isso com http.sys - Pergunta sobre HttpListener streaming de

Mas se você vai ter energia suficiente como um desenvolvedor -. Você pode tentar escrever própria http.sys invólucro e que é melhor abordagem de escrever próprio servidor web no Windows

Lixo, rolar o seu próprio. A arquitetura permite. Esteja ciente de que existem alguns comportamentos estranhos na classe. Fechá-lo para baixo um par de vezes em um serviço NT torna flakey como um saco de massas folhadas.

Se você executá-lo em Console, nenhum problema, executá-lo assíncrona e todos devem estar bem, no entanto, iniciar e parar o danado. isso é uma questão diferente, que eu estou atualmente lutando com como sem erros estão sendo produzidos a partir das classes hermeticamente selados Microsoft.

Eu me sinto python chegando com uma pequena pitada de cherrypy

Se você escrevê-lo, então você vai ter que mantê-lo. Microsoft já escreveu um servidor web -. Você deve usá-lo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top