嵌入式C#Web服务器?

Iai*_*oat 26 .net c# embedded-server

在Java中,我已经能够在我的应用程序中嵌入*jetty服务器,但是.Net是否有等效的嵌入式*服务器技术?

如果可能的话,开源(FLOSS)将是首选.

*通过嵌入式我的意思是一个轻量级的Web服务器应用程序,可以与我的应用程序打包并在用户的本地桌面计算机上运行,​​以在本地提供Web服务.

Iai*_*oat 24

到目前为止,我发现的与Jetty最接近的是Nancy,描述如下:

一个轻量级,低仪式的框架,用于在.Net和Mono上构建基于HTTP的服务.

Nancy旨在处理DELETE,GET,HEAD,OPTIONS,POST,PUT和PATCH请求

Nancy被设计为对现有框架没有任何依赖性.使用.NET框架客户端配置文件构建,Nancy可以在任何您想要的地方使用,因为它完全自包含它自己的请求和响应对象.

Nancy的核心概念之一是主机.主机充当托管环境和Nancy的适配器,从而使Nancy能够在现有技术(如ASP.NET,WCF和OWIN)上运行,或者集成到任何给定的应用程序中.

一个更轻量级的选择是Kayak(更新:项目在2014-01-18期间看起来很糟糕),其文档描述为:

一个简单的Web服务器.它侦听连接,创建请求的内存表示,并允许您轻松生成响应.它可以在任何C#程序中使用.您的代码将Kayak加载到其进程空间 - 而不是相反!

Nancy和Kayak都获得麻省理工学院的许可.

  • 南希不是网络服务器.它是中间件.你需要在网络服务器上运行Nancy(实际上Nancy将在Kayak AFAIK上运行(当为OWin配置Kayak时)).事实上,我建议Nancy/Kayak堆栈是您正在寻找的. (6认同)
  • 没错,Nancy的核心部分本身并不是Web服务器.但是,我相信Nancy.SelfHosting库是. (2认同)

Mar*_*rio 11

这是我去年写的另一个选择,并且对我有好处.

EmbedIO: https ://github.com/unosquare/embedio

我主要用它来在Raspberry Pi(soft-float)上创建RESTful服务.

编辑:更新了Mono 3.10的代码,支持WebSockets和请求的异步处理.


Aro*_*ron 6

2016年更新:

街区的新孩子是红K。

Kestrel是一种开放源代码Web服务器,是Microsoft ASP NET Core计划的一部分。它是基于libuv的基于事件的Web服务器(基本上是node.js- js+ .net)。这意味着它应该易于在不同的操作系统之间移植。不幸的是,这确实意味着它需要外部本地依赖。

https://github.com/aspnet/KestrelHttpServer

这样做的一个较旧的项目是Nowin

https://github.com/Bobris/Nowin/tree/master/Nowin

这是完全在.net中构建的Owin的实现。不幸的是,它已被Kestrel弃用。