【问题标题】:Windows Service or Asp.net web api RESTful service?Windows 服务或 Asp.net web api RESTful 服务?
【发布时间】:2015-09-01 10:47:48
【问题描述】:

我正在使用 .NET Framework 4.5.1 开发 C# 解决方案。

我需要有一个程序(一个对象实例)一直在运行,等待接收命令。这个程序会有一个状态,根据这个状态,它会允许一些命令或其他命令。

例如,它将有一个打开和关闭命令。如果状态未打开,程序接收到关闭命令,则什么也不做。

我想创建一个 Windows 服务或 ASP.NET MVC WebApi 2.2 应用程序。

如果我选择 windows 服务,程序会一直运行,但我不知道如何与它通信(可能添加一个 TCP/IP 服务器)。

如果我使用 ASP.NET MVC WebApi 2.2,我可以使用 POST 或 PUT 消息发送命令,但我不知道我是否可以在 Web 服务启动时运行对象实例。

该程序是一个我必须实例化它的类。此实例将保持其状态以及与 WCF 服务的通信。

你有什么推荐给我的?

【问题讨论】:

  • 您可以拥有一个 Windows 服务主机 webapi,它就像任何其他 http 端点一样。您可能需要在命令 propmpt 处运行几个命令以赋予它正确的权限。只需谷歌“在 Windows 服务中托管 Web api”即可获得大量示例

标签: c# wcf asp.net-web-api windows-services


【解决方案1】:

可供选择的选项有点奇怪。

您可以在 Windows 服务中自托管 Web API,并使用 HTTP 与服务进行通信。请注意,Web API 是关于无状态的,因此,如果您需要保留状态,这应该是可持久化的数据。

关于与 Windows 服务通信的方式,使用 Web API 以外的其他方式 - 有多种方法可以做到这一点。 WCF 与 TCP/命名管道、纯命名管道(没有 WCF)、套接字、内存映射文件。您只需要选择最适合您的要求。

【讨论】:

  • 感谢您的回答,但我不明白这一点:“可供选择的选项有点奇怪。”什么意思?
  • 我的意思是,它所说的问题(Web API 与 Windows 服务)是不正确的。 Web API 是一个构建 RESTful 服务的框架。 Windows 服务只是一种应用程序类型,它可以托管 Web API 服务或提供一些其他功能。它们不能直接比较。
  • 另一个问题:如何实现windows服务和Api控制器之间的这种通信?我问过这个问题:stackoverflow.com/questions/32374489/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多