22

是否可以创建可以处理 Web 服务请求的 C# EXE 或 Windows 服务?显然,某种嵌入式(可能是有限的)Web 服务器必须是 EXE/服务的一部分。EXE/服务不必依赖安装的 IIS。优选地,嵌入式网络服务可以处理 HTTPS/SSL 类型的连接。

场景是这样的:客户想要在他们的公司机器上安装一个小型代理(Windows 服务)。该代理将有两个主要任务:1) 随着时间的推移监控系统并收集某些数据;2) 响应 Web 服务请求(SOAP -v- REST 仍在讨价还价)以用于数据收集或系统更改目的。客户喜欢 Web 服务 API 的想法,因此可以编写任意数量的客户端(使用任何语言)来接入公司机器上运行的各种代理。他们希望安装相对轻松(安装 .NET、一些程序集、服务、修改 Windows 防火墙、启动服务),而不需要安装和配置 IIS。

我知道我可以用 Delphi 做到这一点。但如果可能,客户更愿意在 C# 中完成此操作。

有什么建议么?

4

7 回答 7

15

是的,有可能,您可能想看看WCFSelf Hosting

于 2009-06-18T17:09:43.803 回答
5

是的,这是可能的(而且相当容易)。

这是一篇CodeProject 文章,展示了如何在 C# 中制作基本的 HTTP 服务器。这可以很容易地放入独立的 EXE 或服务中,并用作 Web 服务。

于 2009-06-18T17:02:15.000 回答
3

您可能想要检查的一项技术是 WCF。进入 WCF 可能会有点痛苦,但是 Keith Elder 在 DNRTV 上有一个很棒的截屏视频,展示了如何以非常简单的方式开始使用 WCF。

http://www.dnrtv.com/default.aspx?showNum=135

于 2009-06-18T17:07:11.593 回答
1

您可以查看.Net 框架中的HttpListener

于 2009-06-18T17:12:56.047 回答
1

我强烈推荐 WCF。它非常适合您所描述的产品。有很多可用的书籍

于 2009-06-18T17:13:16.810 回答
1

当然,你可以这样做。请务必将项目的输出类型更改为控制台应用程序。然后,在您的 Main 函数中,添加一个 string[] 参数。关闭您在命令行上收到的某个开关,您可以分支到 ServiceBase.Run 以作为 Windows 服务运行,或者分支到其他代码以运行控制台应用程序。

于 2009-06-18T17:40:32.937 回答
1

这个问题有点老,但由于我前段时间需要类似的东西,所以感觉这个问题仍然相关。

我用 NancyFx 和 OWIN 编写了一个小的 Rest-API。OWIN 是 .Net 应用程序和 Web 服务器之间的标准接口。使用 OWIN 可以创建自托管的 WEB-API。另一方面,南希是

一个轻量级、低俗的框架,用于在 .NET 上构建基于 HTTP 的服务¹

这两者的结合使得创建自托管 C# Web 服务成为可能。我很确定现在有更多的可能性来创建这样的东西,但由于我这样使用它,我认为这些信息可能对某人有用。

于 2020-08-05T10:07:38.373 回答