【问题标题】:Embedded C# web server? [closed]嵌入式 C# Web 服务器? [关闭]
【发布时间】:2010-11-24 16:05:02
【问题描述】:

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

如果可能,将首选开源 (FLOSS)。

*我所说的嵌入式是指可以与我的应用程序一起打包并在用户的本地桌面计算机上运行以在本地提供网络服务的轻量级 Web 服务器应用程序。

【问题讨论】:

标签: c# .net embedded-server


【解决方案1】:

到目前为止,我找到的与 Jetty 最接近的等价物是 Nancy,描述为:

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

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

Nancy 的设计目的是不依赖于现有框架。 Nancy 使用 .NET 框架客户端配置文件构建,几乎可以在任何您想使用的地方使用,因为它完全独立于自己的请求和响应对象。

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

一个更轻量级的选项是Kayak更新:项目在 2014-01-18 时看起来已经死了),其文档描述为:

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

Nancy 和 Kayak 都获得了 MIT 许可。

【讨论】:

  • Kayak 只提供静态 html 还是可以托管 ASP.Net 应用程序?
  • 南希不是网络服务器。它是中间件。您需要在网络服务器上运行 Nancy(实际上 Nancy 将在 Kayak AFAIK 上运行(当 Kayak 配置为 OWin 时))。事实上,我建议 Nancy/Kayak 堆栈是您正在寻找的。​​span>
  • 没错,Nancy 的核心部分本身并不是一个 Web 服务器。但是,我相信 Nancy.SelfHosting 库是。
  • @sprocketonline Nancy.SelfHosting 使用 HttpListener 通过 WAS 连接到 IIS。
【解决方案2】:

这是我去年写的另一个替代方案,对我很有帮助。

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

我主要使用它在 Raspberry Pi(软浮点)上创建 RESTful 服务。

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

【讨论】:

  • 不支持 .net 4, :(
  • 只有不到 10 行代码,我有一个提供静态文件的 Web 服务器。我希望它提供一种在完全服务后打印 url 的方法。否则它小而可靠。
  • @videoguy 这是一件非常简单的事情。您可以简单地创建一个扩展 WwebModuleBase 的模块,并让处理程序在打印 Url 后返回 false。在此处查看示例:github.com/unosquare/embedio/blob/master/Unosquare.Labs.EmbedIO/…
  • 我听从了您的建议,并且能够将每个 Web 请求记录到 UI 日志面板。 @Mario 这个库是否支持监听 https:// 端口?
【解决方案3】:

2016 年更新:

街区里的新孩子是Kestrel。

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

https://github.com/aspnet/KestrelHttpServer

执行此操作的旧项目是 Nowin

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

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

【讨论】:

    【解决方案4】:

    与 Visual Studio 一起使用的称为 cassini。有一个很好的衍生物叫做UltiCassini

    【讨论】:

      【解决方案5】:

      微软自己的解决方案叫做 Katana,

      https://katanaproject.codeplex.com/

      请注意,它是完全开源的,在 Apache 许可下。

      【讨论】:

      • Katana 是用于将 OWIN 与 IIS 集成的 Microsoft 项目。
      • @Aron 它可以在没有 IIS 的情况下安全地自托管。
      猜你喜欢
      • 2012-03-27
      • 1970-01-01
      • 2022-08-18
      • 2021-05-18
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多