【问题标题】:Web API: Background tasks - ping of multipe clients (health status of clients)Web API:后台任务 - 多个客户端的 ping(客户端的健康状态)
【发布时间】:2022-01-27 22:59:34
【问题描述】:

我有一个 Web API,它从多个客户端(其他工作站/服务器)收集数据并将这些信息显示给用户。如果任何工作站/服务器脱机/不可用,我想向用户显示。因为我无法确保客户端正在向我的 API 发送离线命令,所以我想通过重复 ping 工作站来接收此命令。

实现这一目标的最佳方法是什么?到目前为止,我对我的解决方案并不满意。

我是否在 IIS 应用程序开始时启动一个后台任务来创建多个 ping 任务?

我是否必须创建第二个应用程序来处理固定并只告诉我的 Web-API 状态?

【问题讨论】:

标签: c# asp.net-core asp.net-web-api dependency-injection background-task


【解决方案1】:

您可以通过多种方式实现这一目标。我只是在下面描述一种我认为最适合您的任务的解决方案。

第 1 步:创建一个存储服务器状态的位置。它可以是 SQL 数据库、Azure 存储等。

第 2 步:创建一个 Azure 逻辑应用程序,以每 5 分钟左右调用(ping)您的所有服务器。如果您想要更准确和实时的状态,请尽量简短。

第 3 步:创建使用您保存的数据的 API。您甚至可以显示您的用户上次您的服务器处于活动状态的时间。

第 4 步:客户可以随时致电查看状态。

如果您想在任何服务器关闭时发出任何警报,您可以在逻辑应用中添加逻辑。有用于从 Logic App 发送电子邮件的内置工具。如果您的客户端是移动应用程序,请考虑向客户端发送推送通知。

【讨论】:

  • 为了澄清你会将我当前的 web-API 与一个数据库和一个只处理 ping 的新应用程序分开?如果这一切都在一个应用程序中,那么我已经完成了所有步骤。但我不满意我是如何实现第 3 步的。目前我有一个库,它定期调用我的 ping 类。从那里我为 ping 创建未等待的任务。这会创建很多“不好的代码”来处理结果并存储到数据库。我遇到了诸如注射寿命等问题......所以我想知道什么是干净且可维护的方法。
  • @user3077796 是的,这就是为什么我建议将“ping”逻辑分配给另一个应用程序。所以API不必做这个逻辑,只专注于将现有的状态数据/日志传递给客户端。
猜你喜欢
  • 2011-02-05
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2020-10-23
相关资源
最近更新 更多