2015-12-17 37 views
-2

我打算創建一個asp.net MVC Web應用程序將執行一個同步作業的asp.net的MVC控制器的操作方法,來實現這一點: -調用使用Windows任務調度程序或其他安排表工具

  1. 我們有一個第三方ERP系統,它會及時生成一個.csv文件,它將在每小時生成一個.csv文件。該.csv文件包含有關本公司的資產,如型號,價格,名稱,位置等信息...

  2. 現在,我將開發一個asp.net MVC Web應用程序將讀取.csv數據和更新與此數據庫數據。

所以我打算做到以下幾點: -

  1. 我將創建一個新的數據庫,其中將包含的數據。

  2. 我將創建一個新的asp.net mvc-5 web應用程序,它具有SYNC操作方法,該方法將讀取.csv數據並更新數據庫。

現在我面臨的問題是我需要同步作業每小時運行或按照特定的計劃運行。現在,從我以前的經驗,我可以列出這些方法2調用及時的操作方法: -

  1. 裏面的asp.net的MVC的Global.asax中我可以創建運行在每個小時的計劃。

  2. 我可以使用第三方工具如Hangfire來安排任務。

現在用任何一種方法都會使這一限制: -

  1. 在Global.asax或第三方工具,如遲髮型將應用程序池下運行,如果不執行任何操作在應用程序上,那麼計劃永遠不會運行,因爲應用程序池不會處於活動狀態。但是在我之前的應用程序中,這並不是一個真正的問題,因爲系統在計劃任務旁邊包含很多視圖,所以系統在工作時間內幾乎保持100%的活動狀態。

但是在我目前的項目中,用戶不會訪問Web應用程序,因爲它只會執行一個同步作業,並且最終用戶沒有任何其他功能。所以在這種情況下,同步作業永遠不會運行,因爲應用程序池不會處於活動狀態。 因此,誰能意見,如果這些方法聽起來有效解決我的問題: -

  1. 創建一個Windows計劃任務將每小時被調用的操作方法,網址: -

的schtasks /創建/ tn「我的計劃任務」/ tr「powershell -ExecutionPolicy unrestricted -Command \」(New-Object Net.WebClient).DownloadString(\\ http://url .to.be.executed/cron。PHP \\ 「)\」/ SC DAILY/ST 7時○○分00秒/ RU系統

  • 要創建的global.asax 2個內安排任務。一個計劃任務將每5分鐘調用一次應用程序url以保持應用程序池的活躍狀態,另一個計劃任務每​​小時調用同步操作方法。在這種情況下,應用程序將繼續自稱爲每5分鐘,這將迫使應用程序池說活着,同步作業將運行,即使沒有用戶訪問系統中的每個小時...
  • 所以任何人都建議在此請?

    感謝

    +1

    你在尋求什麼樣的建議?你需要清楚。順便說一句,你可以配置Hangfire [永遠運行](http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html)。 – mason

    +0

    @mason但是,我可以添加一個Windows計劃任務,例如每10分鐘會調用一次應用程序,並使用hangfire,而不必將其配置爲始終運行? –

    +1

    當然,我想你已經知道了。 – mason

    回答

    3

    MVC是所有關於用戶交互,並且許多用戶與在該相同的應用程序進行交互。如果您只需要按計劃運行一項任務,那麼您甚至不需要爲此提供UI,並且不存在需要處理多個同時發生的遠程請求或Web應用程序滿足的問題。你可以從字面上創建一個控制檯應用程序,並使用Windows任務計劃程序。 MVC是完整的矯枉過正,不止於此,不適合這個目的。

    +0

    如果我永遠不會在應用程序中添加更多功能,那麼您是正確的..但在我們的情況下,我希望將其放在一個asp.net mvc web應用程序中,因爲我們可能會在同步作業之外添加額外的功能,所以調用使用Windows任務計劃程序的操作方法需要遵循的方法? –

    +1

    使用某種工具是錯誤的,因爲您*可能會*在未來使用功能。如果您稍後需要添加Web類型的東西,則可以創建一個MVC項目*然後*並將此功能遷移到該項目。但是,有一種觀點認爲這個功能不適用於Web項目。使用MVC的網絡東西,並將其作爲控制檯應用程序。沒有什麼說你必須有一件事。如果存在交叉,這兩件事可以通過類庫共享代碼。 –

    +0

    所以你的意思是編寫一個控制檯應用程序並從Windows調度程序調用這個控制檯應用程序更好?你是這個意思嗎 ?第二個問題,現在我從來沒有寫過控制檯應用程序,所以不知道它將在哪裏部署?或者它將作爲一個.exe文件運行? –

    相關問題