【发布时间】:2017-10-18 22:28:44
【问题描述】:
简而言之,我正在寻找在 .Net Framework 应用程序(例如 Windows 窗体)中提供 REST 或 SOAP API 服务器的最佳方法 - 在某些情况下无需管理员权限
目前在可能的可移植 csharp 应用程序中提供基于 Web 的 REST 或 SOAP API 的最佳方式是什么? 基本上我需要开箱即用支持基本 http 标准的东西(例如 Expect: 100-continue 等),同时能够直接实例化我的 csharp 程序的类(性能和易于使用的原因)。
微软的方式是要么使用 IIS 和可能的 ASP,要么使用 httplistener。 IIS 永远无法以可移植的方式运行,并且需要大量基于安装过程/系统管理的工作。另一方面,httlistener 甚至还没有成为网络服务器,我需要自己实现所有标准的网络服务器命令。
多年来我一直在寻找这个话题,一个例子是这个问题[老问题]Alternative to HttpListener?
不幸的是,这个链接指向一个已停止的项目。
有什么想法吗?
[编辑] 该问题不仅针对 C#,还针对 .NET Framework 2-4.5。结果应该可用于例如Windows 窗体、Windows 服务和命令行应用程序。
目前我正在使用基于 HTTPListener 的骨架 Web 服务器,因此我需要自己实现请求的所有解析、答案的格式和对特殊 http 命令的反应(这似乎是一个永无止境的任务):@ 987654322@
【问题讨论】:
-
这是一个购物问题,用谷歌搜索。 “.net 可嵌入网络服务器”展示了 Nancy、NHttp、Kayak、EmbedIO。 Node.js 是大狗,所以你也想谷歌“node.js .net 集成”。弹出 edge.js
-
确保在赏金结束前将其写为答案 ;-)
-
REST 和 SOAP 是完全不同的野兽。 REST 是......几乎没有,所以 HttpListener 就足够了。成熟的 SOAP(和 WSDL)很复杂而且有点过时。所以这两个要求在某种程度上是矛盾的。 HttpListener 不需要管理员权限,前提是您所做的事情会暴露您的机器。例如,您想向外部开放您的服务器,还是仅用于 localhost (stackoverflow.com/questions/223063/…) ?如果您想要的不仅仅是 localhost,则无论如何都需要打开防火墙
-
@Simon 感谢您的关注。我目前使用 HttpListener 和一个非常简单的 rest api 驱动,并发现问题无处不在。一些消息无效,一些http客户端发送奇怪的http标准消息,如expect continue等。所有这些都不会发生使用像apache这样的标准网络服务器。不幸的是,没有办法将 .net 应用程序和 apache 本机结合起来。然后关于肥皂或休息:这是一个或,我会在我的问题中纠正这个。
-
@Hans Passant 我真的很想您的评论作为答案。你教我购物问题,这个问题可能为时已晚,但我下次会做得更好。我想一份需求清单是一个好的开始。我喜欢你的 node.js 集成,这可能是我的解决方案。我已经尝试过所有其他人。
标签: c# rest soap webserver ipc