2017-10-18 351 views
0

总之,我正在寻找最好的方法来在.Net框架应用程序(例如Windows窗体)中提供REST或SOAP API服务器 - 在某些情况下没有管理权限C#中的HttpListener和Griffin.WebServer的替代品

当前在可能的便携式csharp应用程序中提供基于Web的REST或SOAP API的最佳方式是什么? 基本上我需要一些支持基本http标准的开箱即用(例如期望:100-继续和其他),同时能够instanciate我的csharp程序的类直接(perfomrance和易用性的原因)。

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

我四处寻找这个话题,因为多年以来,一个例子是这个问题[老问题] Alternative to HttpListener?

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

任何想法?

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

目前我正在使用基于HTTPListener的骨架Web服务器,因此我需要实现所有请求的解析,对答案进行格式化并对我自己的特殊http命令作出反应(这似乎是一个永无止境的任务): https://www.codeproject.com/Articles/17071/Sample-HTTP-Server-Skeleton-in-C

+1

这是一个购物问题,使用谷歌来找到点击。 “.net嵌入式Web服务器”显示Nancy,NHttp,Kayak,EmbedIO。 Node.js是大狗,所以你也想谷歌“node.js .net集成”。 Out pops edge.js –

+0

请确保您在赏金结束前将其写为答案;-) – Harry

+1

REST和SOAP是完全不同的野兽。 REST是......几乎没有,所以HttpListener应该足够了。全面的SOAP(和WSDL)非常复杂和老式。所以这两个要求在某种程度上是矛盾的。 HttpListener不需要管理员权限,只要你做了暴露你的机器的事情。例如,你想打开你的服务器到外面,还是只是本地主机(https://stackoverflow.com/questions/223063/how-can-i-create-an-httplistener-class-on-a -random-port-in-c /)?如果你想要比本地主机多,你仍然需要打开防火墙 –

回答

1

你应该可以使用.NET Core做你想做的事。您可以非常容易地使用独立于IIS的独立API来构建自托管API。教程应该很容易找到,here是微软的一个例子。

+0

谢谢!我查阅了.NET Core,但我不确定它是否可以与.NET框架结合。我需要一个很好的.net框架的解决方案。 – Harry

1

由于ilikesleeping建议您使用DOTNET核心,但也有在做它作为服务工作的并发症。

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

以下是一些获得kickstarted的链接: 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?

0

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

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

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

顺便说一下,这是我的第一个“赏金”问题。自从大约3周以来,我一直是SO用户。 (被动多年,像大多数人一样)