簡體   English   中英

.Net Core 2.1報告長期任務的進展情況

[英].Net Core 2.1 Reporting progress of long task

我正在將一個非常古老的VB遺留應用程序重新編寫到基於瀏覽器的C#ASP.Net應用程序中,該應用程序使用Core 2.1和Entity Framework后端到SQL服務器。

其中一些功能是長時間運行的任務。 一個例子是導入地址地名詞典CSV文件。 這些文件的大小通常為50-100Mb,需要解析。 我編寫了一個上傳器和導入函數,它運行大約15分鍾 - 大部分是數據庫寫入時間。

我正在嘗試找到一種方法來運行導入過程,以便它可以向客戶端瀏覽器報告進度,理想情況下,通過將菜單選項更改為進度條直到任務完成 - 因為_layout.cshtml在每個頁面上,它會讓任何用戶知道任務正在運行以及何時完成。

我查看了IHostedServices和BackgroundService函數,但我找不到任何與我想要做的匹配的示例。 我見過一篇關於MVC5的文章,它使用了SignalR&Knockout(我不太熟悉),但它沒有使用Core 2+或更新的服務功能。

任何人都可以指向一個好的.Net Core> 2.0這樣的例子嗎?

提前致謝。

對於長時間運行的過程,您可以使用廣泛使用的Hangfire

文檔中描述了通過SignalR進行的進度跟蹤: http//docs.hangfire.io/en/latest/background-processing/tracking-progress.html

它與.Net Core 2.1兼容。

就個人而言,我會編寫一個Windows服務來使用Topshelf之類的東西進行處理: http//topshelf-project.com/

因此,您的ASP應用程序會調用該進程,無論需要處理哪些數據,它都會啟動並執行此操作。 添加一個端點(可能與Nancy: http//nancyfx.org/一樣 ),您的ASP應用程序可以調用該端點來檢索進度信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM