c# - 如何安排在我的 MVC 网络应用程序中自动运行 Controller ?

标签 c# sql-server asp.net-mvc

我有一个持续跟踪温度的数据库。我还有一个 Controller ( Controller A)可以计算 60 分钟内的平均温度(这可以由用户在前端更改)。如果 Controller A 的计算超出了设定的最高温度,它会调用另一个 Controller ,通过电子邮件通知用户( Controller B)。

 Pseudo code:

 while(Controller A) <-- runs in the background
 {
    if(max temperature is reached)
       Call Controller B
 }

我的问题是,我怎样才能让服务器持续运行 Controller A 而不会变得非常慢?我读到 SignalR 可以做自动化的事情,但我不太确定我应该寻找哪些关键字。

如果有人能为我指出正确的方向,那就太好了。

最佳答案

您不应该在 ASP.NET 线程上运行如此长时间的进程。你有两个选择

1) 创建一个 Windows 服务,它会每隔 n 分钟检查一次您的数据库表并执行所需的操作(例如发送电子邮件等)

2) ServiceBus/RabbitMQ 等消息服务

3) 如果输入通过应用程序中的 Controller 进入数据库表,您可以将此值传递给另一个服务/线程/进程以进行计算和发送电子邮件。


复制自Mason's在对 future 读者的回答中发表评论:还有其他选项,如 Hangfire、FluentScheduler、Quartz 等。这些库是围绕在 ASP.NET 后台手动运行某些代码的一些缺陷而设计的。 Scott Hanselman 在 excellent blog post 中描述了它们带有示例代码。

关于c# - 如何安排在我的 MVC 网络应用程序中自动运行 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34400778/

相关文章:

javascript - 使用 asp.net mvc 查看包消息在按钮单击成功时无法正常工作?

c# - ASP.NET API Controller 的 POST 数据为空

c# - 蓝牙拨号与 32feet.net 和 c#

c# - 创建大量 C# 线程的最佳模式

c# - 使用 ASP .NET Core Identity 和 EntityFrameworkCore 注册新用户时出现 InvalidOperationException

sql-server - 在 SQL Server 2000 中将一组行转置为列

SQL Server : What is the difference between Index Rebuilding and Index Reorganizing?

c# - 在 List<string> 中搜索字符串 .StartsWith()

mysql - SQL 查询搜索从同一个表中获取按状态过滤

c# - 使用 Microsoft Chart Control 创建图表