我想编写一个小型Web服务以在一个小的Linux盒子上运行。我更喜欢在C#中进行编码,因此我想使用单声道。

我不希望运行完整的Web服务器或Mono的ASP.NET版本的开销。我正在考虑使用一个与每个客户端连接的线程进行单个过程。线程之间的共享内存,而不是数据库。

我已经阅读了有关Microsoft版本的HTTPLISTENER版本及其与HTTP.SYS驱动程序的工作方式的文章。 las,Mono在此课程上的文档只是自动级界面,而没有讨论它在引擎盖下的工作方式。 (Linux没有http.sys,所以我想它的实现大不相同。)

有人可以将我指向一些讨论此模块的资源吗?

非常感谢,比尔,billpg.com

(我的问题对我的问题有一点背景。)

不久前,我问 这个问题, ,有兴趣与许多来回交流进行长时间的对话。我已经解决了设计自己的临时协议,但是我与之交谈的人确实想要一个休息界面,即使以“好的,请立即发送您的命令”信号为代价。

因此,我想知道在Linux/Mono服务器上运行ASP.NET,但偶然发现了Httplistener。这似乎是理想的,因为每个“对话”都可以在单独的线程中运行。循环中调用HTTPLISTENER的线程可以查找每个不连接连接的线程并传递对该线程的引用。

ASP.NET驱动服务的替代方案是让ASPX代码从数据库中拾取状态,并在新状态完成后写回。是的,它会起作用,但这是很多开销。

有帮助吗?

解决方案

问候,单声道中的httplistener课程没有太大的问题。我认为,其在MS环境中的用法与Linux环境之间的最大差异是,如果没有root/su/sudo安全性,端口80就无法绑定。其他端口没有这种限制。例如,如果您指定前缀: http://localhost:1234/ HTTPLISTENER可以按预期工作。但是,如果添加前缀 http://localhost/, ,您期望在80端口上聆听,它会默默失败。如果您明确尝试绑定到端口80(http:// localhost:80/)然后,您引发了例外。如果您将应用程序称为超级用户或根源,则可以明确绑定到端口80(http:// localhost:80/).
我尚未详细地探索其余的HTTPLISTENER成员,无法对其在Linux环境中的运作效果进行任何有用的评论。但是,如果有兴趣,我将继续发布我的观察结果。

Chickensandwich

其他提示

我不确定您为什么要这么深入引擎盖。即使在Microsoft方面,有关HTTP.SYS的文档,如果您使用的是.NET框架,也可能无法为您提供真正有价值的信息。

要知道对单声道的某些功能是否足够好,您总是应该下载其VMware或VPC映像,并在其上测试您的应用程序。

http://www.go-mono.com/mono-downloads/download.html

尽管单声道比几年前更成熟,但我们不能说它已经通过Microsoft.net等现实世界应用进行了测试。因此,请测试您的应用程序,并将您发现的问题提交给Mono团队。

根据我的经验,小问题仅在几天之内就解决了,而对于重大问题,则需要更长的时间。但是,有了单声道源代码,您可以自己修复,或者在大多数情况下找到良好的解决方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top