2012-02-01 104 views
1

我想知道這將是一個簡單而有效的方式來觸發具有web用戶界面立即返回持久/運行存儲過程通過ASP.NET MVC 3的用戶界面調用和用戶「允許」關閉瀏覽器並稍後再檢查。MVC長時間運行的EF存儲過程調用

我真的不想爲此創建一個windows服務,我正在考慮使用ThreadPool.QueueUserWorkItem的方法,回收甚至不是一個大問題,應用程序不會承受沉重的負載,是一個內部我們正在製作WebUI來簡化一些維護任務。

有沒有人試過ThreadPool.QueueUserWorkItem的方法,並使用應用程序緩存或類似的方式來保持存儲過程調用的狀態,如「EXECUTING」或「COMPLETED」?

+1

可以使用ansyncController和UI幾乎可以立即返回。在回調中,您可以爲特定用戶存儲通知 – 2012-02-01 12:27:20

回答

1

凡是被排隊到線程池竊取資源ASP.NET請求處理隊列。如果您計劃運行許多長時間運行的任務,那麼您應該使用不同的線程/線程池。如果只是一段時間,那麼它肯定是一個可行的解決方案。

在任何情況下,請記住,你不能從一個Web請求外部訪問應用程序緩存/會話,所以你必須找到另一種方式來保存任務的狀態。

2

你應該看看託管WCF service through MSMQ http binding.這種方式,你可以直接通過HTTP調用插入此Web服務請求到異步隊列。

爲了使服務更容易從UI消耗,可以使WCF endpoint a REST endpoint.

您將能夠直接張貼到從JavaScript您的REST服務,充分利用了微軟提供的箱排隊技術,並不必處理多線程。

您也可以使用AsyncController,進出由微軟提供的現成的解決方案的。

相關問題