2014-05-17 49 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