将HttpListener用于生产型口径Web服务器?

9 .net c# webserver httplistener

使用C#.Net类HttpListener作为生产口径Web服务器的基础是否现实?

我需要托管的http Web服务不包含.aspx或静态文件.所有的http响应都是动态的,并在c#代码中生成,这些代码通过一些检查restl url格式的switch语句调用.

我的想法是IIS实际上是围绕Windows o/s HTTP-SYS内核模块的用户模式包装器,它执行所有重型网络处理,HttpListener也是如此.

我已经有一个基本的多线程Web服务器运行,它非常适合开发,因为它在一个实例中以调试模式启动,现在我在想我是否需要过多的IIS用于生产.低内存占用是另一个吸引力.

Dav*_*kle 6

你有两个认真的选择.不,使用HttpListener编写自己的Web服务器不是生产级的.

1)使用IIS.它具有大量的安全性,性能,或许更重要的是可管理性,您必须重塑自己.像远程管理,日志记录,集成的Windows安全性等.

2)使用WCF并创建ServiceHost来托管您的文件.然后,您将不得不实施自己的服务,并找到管理其生命周期的方法.你可以做到这一点,但是,如果你正在谈论RESTFul网络电话,IIS真的是要走的路.

应该避免手动滚动自己.IIS在过去10年中发生了很大变化.它不再是一个庞大的单片服务器了.它们模块化几乎所有东西,尤其是在Windows 2008中,因此您可以获得精简而快速的系统.

  • @Dave Markle - 没有远程管理员=好一个配置安全漏洞.没有记录=没有问题,动态Web服务请求的大部分性质都隐藏在后期数据中,因此日志不会暴露很多用于诊断.没有集成的安全性=好,不需要它,所以少配置错误配置. (7认同)

小智 6

好吧,正如所说 - 首先尝试使用IIS.

HttpListener一点也不差 - 这是你现在拥有的最快的托管服务器(比TcpListener更快,比Socket类更快).它实际上与IIS相同.但IIS有很多东西.

我不能说IIS是巨石 - 托管使用表明它在Win2008中在稳定性和管理方面变得更糟.但是你手工制作的解决方案会更糟糕.并且不要忘记 - http.sys比HttpListener更可定制.即你不能用HttpListener做流媒体,但你可以用http.sys做到这一点 - 关于HttpListener流媒体的问题

但是如果你有足够的能力作为开发人员 - 你可以尝试编写自己的http.sys包装器,这是在Windows中编写自己的Web服务器的最佳方法.