【发布时间】:2017-03-26 20:33:12
【问题描述】:
我必须实现一个应用程序来计算任务的时间。例如,一个用户可以启动和停止一个确定的任务,我必须知道他花在这个任务上的时间。我可以存储和计算开始和结束时间,但我想知道是否有可能在 C# 中实现一个具有三种方法的 REST API,以便我的应用程序可以使用 Web 服务“调用它”。
StartTimer():当用户在某些应用程序中按下开始按钮时,此 API 方法将被“调用”并且计时器开始计时。 4 小时后,如果用户没有关闭任务(“StopTime()”方法未被“调用”),我想做“某事”。
CurrentTime():返回实际花费的时间
StopTime():当用户按下停止按钮时,将“调用”此 API 方法,计时器停止,返回计时器值
我做了一些研究,发现了一些关于 System.Timers.Timer 和 System.Threading.Timer 的信息。我想知道使用其中一个(什么是最适合这种情况的?)可能是一种好方法或最好的方法是什么?
【问题讨论】:
-
这个任务不适合 REST,REST 是无状态的,这意味着不知道以前的请求,当然你可以创建一个服务,静态类或任何你想要的,但它不是完成此类任务的理想交通工具。另外,请考虑可伸缩性,如果有一天您的 REST API 需要在集群中平衡,除非您创建复杂的基础架构(假设在服务器 A 中调用 Start 并在服务器 B 上调用 Stop),否则它将无法工作。对于这样的任务,最好使用 WebSockets 之类的东西,因为它会在消费者使用 API 时保持连接。
标签: c# multithreading rest api timer