我有一个效率问题的MVC C#Web应用程序。我们有一个用户可以点击的控制器方法,它运行一个通知过程,有时可能需要翻遍10k +条记录,然后发出相关的通知。此过程有时可能需要15分钟以上的时间。
我的问题是一般性的,任何指导都值得赞赏。.我将如何使这一过程更有效率?理想情况下,用户将执行操作以击中我们的控制器并启动这个巨大的过程,然后在该过程在后台运行时返回到正常的应用使用状态。
我会用异步控制器方法来实现这一点吗?
答案 0 :(得分:3)
仅因为您正在运行MVC网站应用程序,并不意味着您无法利用线程和异步处理。我建议您熟悉Asynchronous programming in .NET。
使用最简单的方法,您将启动新的Task,并可以选择订阅回调方法以在需要时进行后期处理。
MVC或任何其他网站的窍门是如何启动任务以及如何将通知返回给用户。这将需要使用JavaScript进行一些客户端编程,但是如果您倾向于在网站上进行更繁重的处理,则我将向您提示使用最现代的方法:带Blazor(Binary Razor)的ASP.NET Core。在撰写本文时,Blazor技术仍处于测试阶段。