我正在为一个新的网络应用程序开发一个项目。我正在确定功能的关键点,而我明确不知道如何处理的一件事如下:
每分钟一次,服务器需要对其数据运行一系列计算,并发布新的派生摘要。
所以从本质上讲,我需要的是一种每分钟运行一次服务器端脚本的方法,即使在用户不活动时也是可靠的。
我正在使用ASP.NET 3.5,C#作为Web界面。使用SQL 2005进行数据后端处理。
我认为所有被更改的数据都是SQL端,因此如果更可行,脚本可以在那里完全运行。
感谢您的任何建议。
答案 0 :(得分:2)
将项目放在缓存中,并且分钟到期。确保为项目删除时为其分配回调方法。一分钟后,项目将被删除,您的回叫将运行。你在那里填充然后再将项目添加到缓存中。
答案 1 :(得分:1)
网站上的“后台”处理有两种选择。您不能将其作为网站的一部分,而是在Windows服务中执行(可以使用相同的业务对象)或者您可以在Web应用程序中启动的后台线程中执行此操作。我们既使用了成功,又使用了不同的地方。在我们的Application_Start中,我们执行:
//Submit background thread to update time left hospital
System.Threading.Thread checkoutThread =
new System.Threading.Thread(BackgroundThread.CheckoutUpdate);
checkoutThread.IsBackground = true;
checkoutThread.Priority = System.Threading.ThreadPriority.BelowNormal;
checkoutThread.Start();
其中BackgroundThread.CheckoutUpdate定义为public static void CheckoutUpdate()
答案 2 :(得分:1)
你不能只使用System.Timers吗?
using System;
using System.Timers;
namespace App
{
class Program
{
static void TimerEvent(object s,ElpasedEventArgs arg)
{
//handle your stuff here
}
static void Main()
{
Timer t = new Timer(60000); //60 seconds * 1000 = 60.000
t.Elapsed += new ElapsedEventHandler(TimerEvent);
t.Start();
}
}
}
万一你不知道..
答案 3 :(得分:0)
让Sql Server完成所有操作。创建存储过程以执行操作,并在企业管理器中设置作业 - >管理 - >工作。告诉作业调用存储过程。