2011-04-01 121 views
4

我需要從ASP.NET頁面調用長時間運行的任務,並允許用戶在執行任務時查看任務進度。通過ASP.NET調用的長時間運行任務的模式

在我目前的情況下,我想從一系列數據文件導入數據到數據庫,但這涉及到相當數量的處理。我希望用戶瞭解該任務的文件有多遠,以及遇到的任何問題。

由於處理資源有限,我想排隊請求這項服務。

我最近看了一下Windows Workflow並想知道它是否可以提供解決方案?

我想一個解決方案可能看起來像的:

ASP.NET AJAX page -> WCF Service -> MSMQ -> Workflow Service *or* Windows Service

沒有人有任何的想法,經驗或以前做過這樣的事情?

+0

不錯的問題,我期待着看到一些很好的答案。 – Kev 2011-04-01 11:55:23

+0

關於WAWS,請使用Azure WebJobs – RickAndMSFT 2014-01-21 01:26:05

回答

1

我有一本書,明確介紹瞭如何整合WF(WorkFlow)和WCF。顯然,在這裏張貼太多了。我認爲你的問題值得一個更長的答案,可以在這個論壇上完全回答,但Microsoft offers some guidance

而對於「WCF和WF」的谷歌搜索出現了大量的結果。


我確實有一個應用程序正在開發中,我們使用了一個類似的過程使用MSMQ。這個想法是在產品召回的情況下向我們所有的商店發送緊急消息,或者是影響大量商店的已知問題。它被開發和測試確定。

由於業務需求,我們最終沒有使用MSMQ--我們需要知道是否沒有立即收到消息,以便我們可以打電話給商店,而不是讓商店在他們的PC能夠挑選時獲得它從隊列中取消消息。但是,它確實工作得很好。

我上面鏈接的文章是一個很好的開始。


我們目前的設計,我們一起生活的,完全按照您詢問的有關Windows服務的內容。

  • 我們有一個網頁來輸入消息和選擇分配列表。 - 這些都保存在數據庫中
  • 我們有一個單獨的Windows服務(我們稱之爲AlertSender)輪詢數據庫並檢查新消息。
  • 商店級別的PC具有託管WCF客戶端的Windows服務,該服務用於偵聽消息(AlertListener)
  • 當AlertSender發現需要熄滅的消息時,它將它們發送到AlertListener,它負責顯示向商店發送消息並播放警報聲。
  • 當發送消息時,AlertSender會更新數據庫中消息的狀態。
  • 當商店收到消息時,一位同事輸入他們的員工#並點擊一個按鈕以確認他們已收到該消息。(對於我們來說關鍵的業務需求是因爲如果所有商店都沒有收到我們可能需要的物理消息,讓他們從貨架上刪除污染產品等)
  • 最後,我們的管理部分有一份報告(ASP.NET )綁定到一個AlertId,它顯示所有未決消息及其狀態。
+0

有趣的想法 - 謝謝。 – CodeGrinder 2011-04-04 07:30:42

0

當完成任務的各個部分後,您可以讓後端導入進程將狀態記錄寫入數據庫,並且Web應用程序可以以任意間隔輪詢數據庫,並更新進度條或否則在任務完成時勾選任務,無論在UI中是否合適。

+0

這是一種想法。問題1是數據庫實際上是第三方產品,我只能通過API訪問。所以我需要爲狀態信息創建一些臨時存儲。 – CodeGrinder 2011-04-04 07:32:44

相關問題