我需要为不同的财务周期生成报告屏幕。由于这是一个相当大的数据集,包含很多规则,因此该过程可能需要很长时间才能运行(某些报告返回需要一个多小时)。
在 MVC 中处理这种情况的最佳方法是什么?
我担心:
这些确实是合理的担忧。
正如一些评论者已经指出的那样:如果报告不依赖于用户的输入,那么您可能需要提前生成报告,例如每晚生成报告。
另一方面,如果报告确实依赖于用户的输入,您可以通过多种方式规避您的担忧,但您至少应该将操作分成多个步骤:
- 来自浏览器的请求启动生成报告的过程。您可以启动一个新线程并告诉它生成报告,或者您可以将“创建报告”消息放入队列中并让服务使用消息并生成报告。无论您做什么,请确保第一个请求快速完成。它应该返回某种标识刚刚开始的任务的标识符。这时,你可以通知用户系统正在处理请求。
- 使用 Ajax 重复轮询服务器以使用给定标识符完成报告。优选地,生成报告的进程应报告其进度,并且该信息应通过 Ajax 轮询提供给用户。如果你想变得更奇特,你可以使用 SignalR 来通知浏览器进度。
- 报告准备就绪后,将链接返回给用户,他/她可以在其中访问报告。
根据您实现此操作的方式,用户可能能够关闭浏览器,喝一口咖啡,然后返回到已完成的报告。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)