2014-05-17 52 views
0

我有一个非常有趣的问题。我有一个与asp.net网站。我需要的是独立的服务,应该始终在后台运行。例如,我可以在特定的日期做一些数据库操作。而且无需从某人寻求请求。独立。我应该遵循哪种方法?每个想法都会被愉快地接受。谢谢我该如何做一个始终在后台运行的ASP.NET后台服务?

+0

可以使用的Global.asax与计时器 –

+0

文件我做了一个项目的方式在那里我需要每1分钟后,调用一个方法 –

+0

或者你可以将服务器上的 –

回答

0

你应该实现另一个应用程序。您不需要任何请求,只需执行一些任务 - 然后使用桌面应用程序。如果您需要提供UI,那么使用WPF或Win Forms,如果只执行一些任务,那么只需使用控制台应用程序。要在特定时间运行它,您可以使用Windows任务计划程序。

0

您需要一个外部应用程序,可以是在您的PC /服务器上运行的服务/程序,也可以是托管服务提供商的网络。 对于想法,如果您希望您的网站提供调度等,Windows Azure提供了一个调度服务,可以在给定的时间间隔内调用Web地址(例如yourwebsite.com/runscheduler)。当这个网址被称为你的网站,然后可以采取行动,当然通过做一些业务逻辑。

+0

感谢您的回答我想我会实现另一个应用程序 – ahmetsarias

0

我建议你看看Revalee开源项目。

Revalee是一种服务,让您安排网络回调到Web应用程序。在你的情况下,你会安排一个回调,在特定时间执行特定的数据库操作。 Revalee非常适用于离散事务操作的任务,如更新某些数据库值或发送自动电子邮件消息(请阅读:不长时间运行)。执行您的操作的代码将全部驻留在您的应用程序中。

要使用Revalee,您可以:

  1. 安装Revalee服务,Windows服务,您的服务器上。 Windows服务在源代码中可用(您可以自行编译)或在Revalee website提供的预编译版本中提供。

  2. 使用Revalee客户端库在Visual Studio项目。 (也有一个特定于MVC的版本。)客户端库可以在源代码中找到(也可以自己编译),也可以通过NuGet提供预编译版本。

  3. 当您的代码调用ScheduleDbOperation()方法(此示例假设您需要您的操作从现在起运行12小时)时,您将会注册将来的回调。

    private void ScheduleDbOperation() 
    { 
        DateTimeOffset callbackTime = DateTimeOffset.Now.AddHours(12.0); 
    
        // The callback should be in 12 hours from now 
        Uri callbackUrl = new Uri(string.Format("http://mywebapp.com/DbOperation.aspx")); 
    
        // Register the callback request with the Revalee service 
        RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl); 
    } 
    
  4. 当Revalee调用你的应用程序恢复,你的应用程序将执行任何动作已经编写它做。您可以通过添加下面的方法调用(DbOperation())到您的网页DbOperation.aspx处理,点菜做到这一点:

    private void DbOperation() 
    { 
        // TODO Lookup the job information and execute the database operation 
        // ... 
    
        return; 
    } 
    

我希望这有助于。

注:上面的代码示例使用的ScheduleCallback()同步的版本,Revalee客户端库也支持异步调用点菜:

RevaleeRegistrar.ScheduleCallbackAsync(callbackTime, callbackUrl); 

在情况下,它不是上述清晰,Revalee服务不是外部第三方在线调度程序服务,而是在您自己的网络上完全控制您安装的Windows服务。它驻留在您自己选择的服务器上并运行,很可能是您的Web服务器(但这不是必需的),它可以从您的ASP.NET应用程序接收回调注册请求。

声明:我是参与Revalee项目的开发人员之一。然而,要清楚的是,Revalee是免费的开源软件。源代码位于GitHub