在长时间运行的过程中经常刷新网页

时间:2019-07-31 08:56:59

标签: asp.net-mvc signalr

我一直在研究问题一段时间,也许我提出的最好的建议是另一个堆栈溢出问题:How should I perform a long-running task in ASP.NET 4?

我在类似的地方想了解我的选择,但是我对MVC的了解不够透彻,无法理解。我使用的是MVC 5,但使用的是4.8框架,另外我还注意到,自从提出此问题以来,SignalR等技术就已经可用。我想知道是否有经验的MVC人士可以给我一个观点?

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

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

我有一个模糊的回忆,我可能在20多年前就曾研究过此问题(经典ASP),并通过定期刷新解决了此问题,每隔几秒钟将更多的页面发送给客户端,但是我现在也尝试使用_Layout页面,因此我已经将该页面发送回了。因此,即使假定仍然存在这样的机制,我也没有选择。再过一阵子,但不久前,我可能已经使用javascript进行了轮询,但是我现在正在阅读的所有内容似乎都将我引向了我不确定我还不完全了解的新技术。

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

1 个答案:

答案 0 :(得分:2)

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