2011-05-18 105 views
0

如果我的網站有一個按鈕,該怎麼辦?用戶點擊按鈕並開始長時間運行的過程。幾個小時(或幾分鐘)後用戶更新網頁並查看結果。在網站上實施長時間運行的最佳(以及其他)方式是什麼?網站上的長時間運行

+1

使按鈕變小。 – 2011-05-18 11:39:03

回答

4

從用戶體驗的角度來看,我建議您像在網上商店中實施訂單處理一樣執行工作。

當用戶開始工作時,他應該能夠跟蹤工作狀態。工作完成了嗎?工作失敗了嗎?這份工作的進展如何?他應該也可以取消這項工作,也許可以修改工作的屬性。您可以使用電子郵件或SMS實施通知機制,用戶應該能夠控制該通知機制。

通過使用JavaScript/AJAX,您可以提供更加交互式的用戶體驗,其中作業狀態網頁在後臺定期自動刷新而不會強制用戶刷新其瀏覽器。

用戶應該能夠離開他的計算機,然後從另一臺計算機連接到該網站,仍然能夠獲得有關待處理和已完成作業的信息。這需要某種形式的用戶登錄。

我建議您將作業處理代碼與網站代碼分開。您可以向作業處理用戶公開Web服務或其他類似技術。網站應查詢服務並在作業服務之上顯示提供用戶界面的結果。

+0

我有一個類似的情況,我想處理這個長時間運行operation.Can你建議我一些如何做到這一點,請嗎? – 2018-01-25 06:24:24

1

我建議您閱讀Threading in asp.Net.對於網站性能,耗時的過程可以放在不同的線程上。

另一種方法是使用AJAX執行任務。這樣,您可以向用戶呈現用戶界面,並啓動處理請求的異步進程。

+2

這不是一個有用的網站解決方案。 Web應用程序是客戶端服務器體系結構,您無法以異步方式將答案發送回瀏覽器。您將不得不在瀏覽器中通過javascript線程輪詢該進程的狀態。 – slfan 2011-05-18 11:46:22

+0

好點@slfan。感謝讓我意識到這一點 – 2011-05-18 11:53:01

1

需要多長時間?如果真的要花費數小時,您不希望代碼在Web服務器上運行。讓服務器產生一個外部進程或啓動一個服務或者沿着那條線,並將長時間運行的代碼放在那裏。

您可以讓代碼在運行時將狀態更新放置在某處(如數據庫中),並且網站可以檢查用戶何時回來查看它是如何執行的。