【问题标题】:Frequently refreshing web page during long-running process长时间运行过程中频繁刷新网页
【发布时间】:2019-08-01 15:01:08
【问题描述】:

我一直在寻找我的问题一段时间,我想出的最好的可能是另一个 Stack Overflow 问题:How should I perform a long-running task in ASP.NET 4?

我也有类似的情况,我想了解我的选择是什么,但我觉得我对 MVC 的了解不够具体,无法得出一个观点。我使用的是 MVC 5,但使用的是 4.8 框架,此外,我注意到 SignalR 等技术在提出这个问题后已经可用。我想知道是否有经验丰富的 MVC 人员可以给我一个看法?

我也有一个长期运行的过程。更具体地说,用户正在导入文件。该文件是分隔的,因此导入会逐行进行。该文件可能长达数千行。每一行都会在几分之一秒内被解析和导入,但整个操作可能需要几分钟。

我并不特别需要异步行为,但由于整个过程的长度,我想定期更新用户的进度。我想知道我有什么选择?

我有一个模糊的回忆,我可能在 20 多年前(经典 ASP)研究过这个问题,并通过定期刷新解决了这个问题,每隔几秒就向客户端发送更多页面,但是我现在也在尝试使用 _Layout 页面,所以我已经将页面发回了。所以我认为我没有那个选择,即使假设这样的机制仍然存在。最近,但还是在不久前,我可能使用过 javascript 进行投票,但我现在阅读的所有内容似乎都指向了我不确定自己是否完全理解的新技术。

我只是想知道将如何解决这个问题?

【问题讨论】:

    标签: asp.net-mvc signalr


    【解决方案1】:

    我不会在 Web 服务器上执行任何文件解析,尤其是当它有数千行时。我会将其委托给各种后台服务,无论是云中的 Lambda 服务、Windows 服务还是计划任务。然后,您可以从后台任务(无论可能是什么)调用 SignalR 集线器来更新导入进度。

    【讨论】:

    • 谢谢。这很有意义,但我现在正在仔细考虑如何更新 UI。如果我有一个离散的(某物)来执行导入,那么它根本没有理由与网站有任何关联,所以(某物)可能应该避免使用例如信号R。一年前,我正在使用 WPF 客户端编写整个应用程序,这更像是我的舒适区,但如果我回到它,我想想办法进行改造。
    • 您不必将 CSV 解析服务绑定到 SignalR 实现。您可以在生成 CSV 解析服务完成时调用的请求时指定回调 URL。这样它就完全不可知了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2021-12-27
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多