Use HttpListener para um servidor web calibre produção?
-
13-09-2019 - |
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.
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