ASP.Net MVC Long Running Process
我需要为不同的财务周期生成一个报告屏幕。因为这是一个很大的数据集,有很多规则,所以运行这个过程可能需要很长时间(对于一些报告来说,要返回一个多小时)。
在MVC中处理这个场景的最佳方法是什么?
我担心:
- 屏幕锁定
- 性能
- 可用性
- 请求超时
这些确实是值得关注的问题。
正如一些评论者已经指出的那样:如果报告不依赖于用户的输入,那么您可能希望提前生成报告,例如,在夜间生成报告。
另一方面,如果报表确实依赖于用户的输入,则可以通过多种方式规避您的顾虑,但至少应将操作拆分为多个步骤:
根据您如何实现这一点,用户可能能够关闭浏览器,喝一口咖啡,然后返回完整的报告。
如果您的应用程序在Windows服务器上与IIS一起运行,则您的ASP.NET代码可以在DB表中创建一条记录,这意味着应该创建该报告。
然后,您可以使用Windows服务或控制台应用程序,它们可能在同一台服务器上运行,并不断检查表中是否有任何新字段。此服务将创建一个报告,在创建期间,它应该更新表字段以指示进度。您的ASP.NET页面可能显示进度条,使用Ajax请求从数据库获取进度指示,或者每隔几秒钟刷新一次页面。
如果您在Windows Azure云上运行,则可能使用WebWorker而不是Windows服务。
对于页面上的屏幕锁定,可以使用jquery块UI库