Question

Est-il réaliste d'utiliser la classe C # .Net HttpListener comme base pour un serveur web de calibre production?

Le service web http je besoin d'héberger ne contient pas .aspx ou des fichiers statiques. Toutes les réponses HTTP sont dynamiques et généré en c # code qui est invoqué par quelques instructions switch qui inspectent un format url reposant.

Ma pensée est que IIS est vraiment un wrapper en mode utilisateur dans Windows o / s module noyau HTTP-SYS qui fait toute la manutention lourde réseau de service et est donc HttpListener.

Je possède déjà un serveur exécutant Web multithread de base qui est excellent pour le développement, car il démarre en mode débogage dans une instance, maintenant je pense que je dois la surpuissance d'IIS pour la production. Une faible empreinte mémoire est une autre attraction.

Était-ce utile?

La solution

Vous avez deux choix sérieux. Et non, coder votre propre serveur Web avec HttpListener n'est pas la production de qualité.

1) Utilisation IIS. Il a une tonne de fonctionnalités de sécurité, de performance, et peut-être plus important encore, de gestion , que vous devez vous réinventer. Comme l'administration à distance, l'enregistrement, la sécurité intégrée de Windows, etc.

2) Utilisez WCF et créer un ServiceHost pour héberger vos fichiers. Ensuite, vous devrez mettre en œuvre vos propres services et trouver un moyen de gérer leur vie. Vous pouvez le faire, mais encore une fois, si vous parlez des appels RESTful Web, IIS est vraiment le chemin à parcourir.

roulant manuellement votre propre doit être évité. IIS a beaucoup changé au cours des 10 dernières années. Il est absolument pas plus un grand serveur monolithique. Ils ont modularisés à peu près tout, surtout dans Windows 2008, vous obtenez un système maigre et rapide.

Autres conseils

Eh bien, comme il a été dit -. Essayer d'utiliser IIS dans un premier temps

HttpListener est pas mal du tout - qui est géré par le serveur d'écoute le plus rapide, vous pouvez maintenant (plus rapide que TcpListener et plus rapide que la classe Socket). Et il est en fait le même noyau que avec IIS. Mais IIS a beaucoup de choses plus.

Je ne peux pas dire IIS est monolithique - l'utilisation d'hébergement montré qu'il est devenu pire Win2008 en termes de stabilité et de gestion. Mais votre solution en main peut être bien pire. Et ne pas oublier - http.sys beaucoup plus personnalisable que HttpListener. C'est à dire. vous ne pouvez pas faire avec le streaming HttpListener, mais vous pouvez le faire avec http.sys - Question A propos de HttpListener le streaming

Mais si vous aurez assez de puissance en tant que développeur. - vous pouvez essayer d'écrire propre wrapper http.sys et qui est la meilleure approche de l'écriture propre serveur Web dans Windows

Très mauvais, Réaliser votre propre. L'architecture permet. Sachez bien qu'il y ait des comportements étranges dans la classe. Fermer un couple de fois dans un service NT rend flakey comme un sac de feuilletés.

Si vous exécutez sur console, aucun problème, exécutez-async et tous devraient être bien, cependant, le démarrage et l'arrêt de la chose darn. thats un autre problème que je suis actuellement aux prises avec comme aucune erreur sont produites à partir des classes scellées hermétiquement Microsoft.

Je me sens python venir avec un petit tiret de cherrypy

Si vous écrivez, vous devrez maintenir. Microsoft a déjà écrit un serveur Web -. Vous devez utiliser

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top