我的團隊正在開發一個ASP.NET應用程序,其中包含一個導入功能。導入通常會由用戶在網頁中輸入一些設置(包括要導入的本地文件)啓動。當用戶點擊「導入」時,該文件應該被上傳然後導入。ASP.NET應用程序的後臺作業
導入操作可能相當長,所以不可能直接從aspx.cs代碼執行,它需要以某種背景方式完成。同樣重要的是,一旦文件上傳,導入不會丟失。我還希望導入立即開始,而不必等待每隔X分鐘檢查一次可用工作的服務或計劃任務。
什麼我發現作爲替代迄今:從線程池
- 後臺線程或ASP.NET類似。將主要工作,但如果應用程序池被回收,則工作將丟失。
- 帶定時器的服務,該定時器定期檢查數據庫中的工作表並運行導入。將工作,但無論是延遲還是導致從數據庫非常頻繁地請求工作。
- 帶有更改通知查詢的服務(不知道確切的名稱,但可以訂閱來自SQL服務器的更改)。
- 服務通過MSMQ獲取工作項目。
- WCF服務,託管在系統服務中,不在ASP.NET內以避免回收。無論是從ASP.NET內部調用WCF服務,還是直接通過AJAX從客戶端公開調用WCF服務(如果非IIS託管的WCF可以公開AJAX端點)。
有沒有其他的選擇?有沒有人有上述選擇的經驗?