2011-05-26 46 views
2

我正在開發基於ASP.NET MVC的Web應用程序。ASP.NET MVC:執行服務器上的緩慢操作並獲取其狀態

有一個很大的數據庫。用戶可以使用自定義過濾器在這個數據庫中進行搜索(html-form with options)。用戶提交表單並等待結果後。這是非常慢的操作。但這不是數據庫優化或查詢優化的問題。

因此,操作緩慢。我想運行此操作,並不時進行頁面編碼而不時進入狀態。

我看到它像:

  1. 發送首AJAX請求(形式數據),以運行該緩慢的操作。
  2. 不時發送ajax-requests以獲取有關操作的信息。

問題: 1.如何在服務器上運行將在http請求之外處理的操作? 2.如何獲得該操作的狀態?

回答

3

我怎樣才能將HTTP請求

你可以在後臺線程中運行它之外進行處理的服務器上運行操作。手動產生一個,或者如果您使用的是.NET 4.0,則使用TPL

如何獲得該操作的狀態?

一旦開始操作應分配一個唯一的ID並立即返回給客戶端。然後,當後臺線程中的操作進行時,它可以使用ID更新其進度。例如,您可以使用Application state來存儲此進度。客戶端將定期輪詢服務器以獲取進度。