C#中HttpListener和Griffin.WebServer的替代品

时间:2017-10-18 22:28:44

标签: c# rest soap webserver ipc

简而言之,我正在寻找在.Net Framework应用程序中提供REST或SOAP API服务器的最佳方法(例如Windows窗体) - 在某些情况下没有管理员权限

目前在可能的便携式csharp应用程序中提供基于Web的REST或SOAP API的最佳方法是什么? 基本上我需要一些支持开箱即用的基本http标准的东西(例如Expect:100-continue和其他),同时能够实现我的csharp程序的类直接(执行和易用性原因)。

微软的方式是使用IIS和可能的ASP或者去httplistener。 IIS永远不能以可移植的方式运行,并且需要大量基于安装过程/系统管理的工作。另一方面,httlistener甚至不是一个Web服务器,我需要自己实现所有标准的webserver命令。

我几年来一直在寻找这个话题,一个例子就是这个问题[老问题] Alternative to HttpListener?

不幸的是,这个链接到已停产的项目。

有什么想法吗?

[编辑]该问题不仅针对C#,还针对.NET Framework 2-4.5。结果应该可用于例如Windows窗体,Windows服务和命令行应用程序。

目前我正在使用基于HTTPListener的骨架Web服务器,因此我需要实现所有请求的解析,答案的格式化以及对我自己的特殊http命令做出反应(这似乎是一项永无止境的任务):{ {3}}

4 个答案:

答案 0 :(得分:2)

您可以尝试Griffin web server。我已经将它用于将Web服务器嵌入到应用程序中,以托管简单的Web界面,文件托管,并为我的应用程序提供REST API。

与embedio项目(非常出色)相比,我最大的优势在于它不需要管理员权限才能运行。看起来没有开箱即用的SOAP集成。

答案 1 :(得分:1)

您应该可以使用.NET Core执行所需操作。您可以使用独立于IIS的自定义API轻松构建自托管API。教程应该很容易找到,here是Microsoft的例子。

答案 2 :(得分:1)

正如 ilikesleeping 建议你可以使用dotnet核心,但是将其作为一项服务工作会有复杂性。

我建议您使用 Microsoft OWIN框架。这是构建restful应用程序的简单而直接的方法。它可以作为控制台或服务正常工作,当然在Console mkode中,您可以根据需要显示表单。

以下是一些获得kickstart的链接: https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api | https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/getting-started-with-owin-and-katana | https://blog.decayingcode.com/post/Creating-a-Self-Hosted-OWIN-Application/ | https://weblogs.asp.net/fredriknormen/creating-a-simple-rest-like-service-with-owin-open-web-server-interface

编辑: ...这里是关于如何拥有一个通过OWIN托管SOAP端点的中间件的主题:Any way to get OWIN to host a SOAP service?

答案 3 :(得分:0)

我是这个问题的作者。只是想让未来的读者明白我在这里学到的东西:

这个问题最有趣的是它是一个购物"题。接受的答案不能仅基于事实,而只能基于主观感受。大多数建议的方法都达到了描述的用例。

这就是为什么有些用户不想写答案而是将他们的建议放在评论中的原因。奇怪,但这是SO的工作原理。我们只是喜欢科学正确的答案!

通过这种方式,这是我的第一个"赏金"题。我是活跃的SO用户,因为大约3周。 (被动多年,和大多数人一样)