2012-06-06 130 views
1

我在Visual Studio Web Express中具有Web应用程序,并且在SQL Server Express中拥有db。 我想在每天下午5:00执行插入100条记录daily.web应用程序是在asp.net MVC和vb.net中开发的。并使用IIS 7.5在服务器上部署。我应该遵循什么逻辑?如何在Web应用程序中运行调度程序实用程序

回答

1

对我来说,我使用这种方法,它是很好至今:)

我用Ta SKS做,重新启动在几秒钟这样的时候了任务,这一次:

public enum ScheduledTasks 
{ 
    CleanGameRequests = 120, 
    AnotherTask = 30, 
} 

然后我开始我的Application_Start所有任务,以确保我的应用程序运行,而该任务将执行

protected void Application_Start() 
    { 
     ............... 
     // Add the tasks on Application starts 
     AddTask(ScheduledTasks.CleanGameRequests); 
     AddTask(ScheduledTasks.AnotherTask); 
    } 

OK,现在这里是招:)

在AddTask方法

我只需要添加新的空项缓存,并根据任务的时间和呼叫该任务的合适的方法设置则absoluteExpiration它。

其实我的我无法解释的思路很清晰,但这里是代码:

private static CacheItemRemovedCallback _onCacheRemove; 
    private void AddTask(ScheduledTasks task) 
    { 
     // Add my `CacheItemRemoved` method to be called on cache removed 
     _onCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved); 
     // Add new key to the cache with the name of this task 
     // and Expiration time acccordin to the task 
     HttpRuntime.Cache.Insert(task.ToString(), (int)task, null, 
      DateTime.Now.AddSeconds((int)task), Cache.NoSlidingExpiration, 
      CacheItemPriority.NotRemovable, _onCacheRemove); 
    } 

然后我的一切做的是选择在CacheItemRemoved方法每个任务合适的方法:

public void CacheItemRemoved(string key, object time, CacheItemRemovedReason r) 
    { 
     //Get Task enum object 
     var task = (ScheduledTasks)Enum.Parse(typeof(ScheduledTasks), key); 
     // Select the suitable method to depending on the Task Enum object 
     switch (task) 
     { 
      case ScheduledTasks.CleanGameRequests: 
       GameRequest.CleanUp(); 
       break; 
      case ScheduledTasks.AnotherTask: 
       Service.AnotherTask(); 
       break; 
     } 
     // Don't forget to re-add the task to the cache to do it again and again 
     AddTask(task); 
    } 

最后一件事仍然是你的情况是检查时间,如果是下午5点,我建议你把这个检查在你的服务类。

希望这对你有所帮助:)

0

由于您使用的是sql server express版本,您不能在sql端创建预定作业。但你可以尝试其他选项。

  1. Quartz.Net

  2. Service Broker approach

  3. 的Windows服务(如果你的主机提供商允许)

+0

好的,很好的选择。但从逻辑上讲,一旦我在服务器主机上托管/部署Web应用程序,并且正在写实用程序方法并在系统时间上调用它,让我们说下午5:00 –

+0

您可以通过Quartz.Net来实现,它可以帮助您创建可以编写所有代码的作业类和方法。它也有多种选项来控制预定的时间和更多。 – VJAI

+0

谢谢马克,我认为这是最好的方式,但是,它的简单的自动功能调用发生在下午5:00。并且Web应用程序托管在db存在的服务器上。 –

相关问题