【问题标题】:Is it possible to create a standalone, C# web service deployed as an EXE or Windows service?是否可以创建作为 EXE 或 Windows 服务部署的独立 C# Web 服务?
【发布时间】:2009-06-18 16:57:35
【问题描述】:

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

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

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

有什么建议吗?

【问题讨论】:

    标签: c# web-services windows-services embeddedwebserver


    【解决方案1】:

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

    【讨论】:

    • 这看起来很有希望。自托管章节特别回答了我关于独立 EXE/服务的问题。谢谢。
    【解决方案2】:

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

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

    【讨论】:

    • 这个例子确实展示了如何嵌入一个 Web 服务器,但没有说明如何将传入的请求转换为一个 Web 服务方法调用。我可以编写一个 SOAP 数据包解析器来创建必要的对象,定位方法并使用各种属性调用它,但我猜想在 .NET 中的某些地方,所有这些都可以完成。
    【解决方案3】:

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

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

    【讨论】:

    • 其实Antonio,WCF比Web Services更痛苦。
    • WCF 网络服务。您可能正在考虑使用旧的 Web 服务方式。
    【解决方案4】:

    你可以看看 .Net 框架中的HttpListener

    【讨论】:

    • 这给了我一个简单的 Web 服务器 - 但没有任何东西可以处理 Web 服务请求。
    【解决方案5】:

    我强烈推荐 WCF。它非常适合您所描述的产品。有大量的books 可用。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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

        用于构建基于 HTTP 的轻量级、低礼仪框架 .NET 上的服务¹

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多