Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将HttpListener用于生产级web服务器? 使用C.*.NET类HTTPListor作为生产口径Web服务器的基础是现实的吗?_C#_.net_Webserver_Httplistener - Fatal编程技术网

C# 是否将HttpListener用于生产级web服务器? 使用C.*.NET类HTTPListor作为生产口径Web服务器的基础是现实的吗?

C# 是否将HttpListener用于生产级web服务器? 使用C.*.NET类HTTPListor作为生产口径Web服务器的基础是现实的吗?,c#,.net,webserver,httplistener,C#,.net,Webserver,Httplistener,我需要承载的http web服务不包含.aspx或静态文件。所有http响应都是动态的,并在c代码中生成,该代码通过几个检查restful url格式的switch语句调用 我的想法是,IIS实际上是Windows o/s HTTP-SYS内核模块周围的用户模式包装器,负责所有繁重的网络处理,HttpListener也是如此 我已经有一个基本的多线程web服务器在运行,这对于开发来说是非常好的,因为它在一个实例中以调试模式启动,现在我想我是否需要在生产中过度使用IIS。低内存占用是另一个吸引人的

我需要承载的http web服务不包含.aspx或静态文件。所有http响应都是动态的,并在c代码中生成,该代码通过几个检查restful url格式的switch语句调用

我的想法是,IIS实际上是Windows o/s HTTP-SYS内核模块周围的用户模式包装器,负责所有繁重的网络处理,HttpListener也是如此


我已经有一个基本的多线程web服务器在运行,这对于开发来说是非常好的,因为它在一个实例中以调试模式启动,现在我想我是否需要在生产中过度使用IIS。低内存占用是另一个吸引人的地方。

如果你写了它,那么你就必须维护它。Microsoft已经编写了一个web服务器,您应该使用它。

这里有两个重要的选择。不,用HttpListener编写自己的Web服务器不是生产级的

1) 使用IIS。它有大量的安全性、性能,也许更重要的是,还有可管理性,这些都是你必须重新设计的。如远程管理、日志记录、集成Windows安全性等

2) 使用WCF并创建ServiceHost来承载文件。然后,您必须实现自己的服务,并找到一种方法来管理它们的生命周期。您可以这样做,但同样,如果您谈论的是RESTFul web调用,那么IIS确实是一个不错的选择


应避免手动滚动。IIS在过去的10年里发生了很大的变化。它不再是一个大型的单片服务器了。他们已经模块化了几乎所有的东西,特别是在Windows 2008中,所以你可以得到一个精简快速的系统

正如人们所说的,首先尝试使用IIS

HttpListener一点也不坏——这是您现在可以拥有的最快的托管侦听器服务器(比TcpListener和Socket类更快)。它实际上与IIS的核心相同。但是IIS还有很多东西

我不能说IIS是一块巨石——从稳定性和管理的角度来看,在Win2008中,托管的使用情况变得更糟了。但你手工制作的解决方案可能更糟。还有,别忘了-http.sys比HttpListener更具可定制性。也就是说,您不能使用HttpListener进行流式处理,但可以使用http.sys进行流式处理-


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

垃圾,自己动手吧。架构允许它。尽管课堂上有一些奇怪的行为,但要注意。在NT服务中关闭几次会使它像一袋泡芙糕点一样剥落

若你们在控制台上运行它,并没有任何问题,异步运行,一切都会好的,不过,启动和停止这该死的东西。这是一个不同的问题,我目前正在努力解决,因为微软密封的类没有产生任何错误


我觉得python带着一点cherryPy来了

顺便说一句,它是.NET类
HttpListener
,而不是“C#.NET类
HttpListener
”。NET中的所有东西都可以被每种语言使用,不仅仅是C#。@John Saunders-我试图澄清我的问题不是关于一个同名的Java类,显然我太努力了。我不会使用HttpListener,它不是httpapi.dll最好的包装器,你可以编写自己的包装器,或者,如果你真的疯了,你可以用TcpListener建立一个。。有些人已经在研究这个问题:内存消耗是不使用IIS的一个很好的理由。上一次我愤怒地使用它时,我们不得不启用3GB交换机,使IIS的内存空间超过1.7Gb。计算一下云平台上的主机托管,你会发现$$$问题。我强烈建议你试试IIS 7,看看这是否仍然是一个问题。这也可能是由于特定的应用程序,而不是IIS。@JS“我强烈建议您尝试IIS 7,看看这是否仍然是一个问题。”好的,我现在在BizSpark上,以便启动一些MS测试工具进行内存浸泡测试。有一个问题,亚马逊云平台暂时被困在Windows 2003上。。。呵呵。@Dave Markle-谢谢,我需要阅读IIS的改进,我的知识在Windows 2003上停滞了。精益和快速是我所需要的。@Dave Markle-No remote admin=good少一个配置安全漏洞。无日志记录=没有问题,对于动态web服务,请求的大部分性质都隐藏在post数据中,因此日志不会为诊断公开太多内容。没有集成的安全性=好,不需要它,这样就少了一件误解的事情。你是根据Windows Server 2003的标准来判断的。2008-2003年=5年差异。日志记录更好,不仅限于IIS日志中的一行程序,还包括详细的失败请求日志记录。您有详细说明Win2008在稳定性和管理方面如何下降的URL吗?