ASP.Net MVC长期运行流程

Bur*_*urt 1 c# asp.net-mvc asp.net-mvc-4

我要求为不同的财务期制作报告屏幕.由于这是一个包含大量规则的大型数据集,因此该过程可能需要很长时间才能运行(一些报告要返回一个多小时).

在MVC中处理这种情况的最佳方法是什么?

我担心:

  • 屏幕锁定
  • 性能
  • 可用性
  • 请求超时

Run*_*une 7

这些确实是有效的问题.

正如一些评论者已经指出的那样:如果报告不依赖于用户的输入,那么您可能希望事先生成报告,例如,每晚报告.

另一方面,如果报告确实依赖于用户的输入,您可以通过多种方式规避您的疑虑,但至少应该将操作拆分为多个步骤:

  1. 请求浏览器启动生成报告的过程.您可以启动一个新线程并告诉它生成报告,或者您可以在队列上放置"创建报告"消息并让服务使用消息并生成报告.无论您做什么,请确保第一个请求快速完成.它应该返回某种标识刚刚开始的任务的标识符.此时,您可以通知用户系统正在处理请求.
  2. 使用Ajax重复轮询服务器以使用给定标识符完成报告.优选地,生成报告的过程应该报告其进度,并且应该通过Ajax轮询将该信息提供给用户.如果您想获得想象力,可以使用SignalR通知浏览器进度.
  3. 报告准备就绪后,返回指向他/她可以访问报告的用户的链接.

根据您的实施方式,用户可以关闭浏览器,喝一口咖啡然后回到完整的报告中.