我需要为不同的财务期制作报告屏幕。由于这是一个包含大量规则的相当大的数据集,因此该过程可能需要很长时间才能运行(一些报告返回的时间超过一小时)。
在MVC中处理这种情况的最佳方法是什么?
我很担心:
答案 0 :(得分:7)
这些确实是有效的问题。
正如一些评论者已经指出的那样:如果报告不依赖于用户的输入,那么您可能希望事先生成报告,比如每晚。
另一方面,如果报告确实依赖于用户的输入,您可以通过多种方式规避您的疑虑,但至少应该将操作分成多个步骤:
根据您的实施方式,用户可以关闭浏览器,喝一口咖啡然后回到完整的报告中。
答案 1 :(得分:0)
如果你的应用程序在带有IIS的Windows Server上运行,你的ASP.Net代码可以在db表中创建一条记录,这意味着应该创建报告。
然后,您可以使用可能在同一服务器上运行的Windows服务或控制台应用程序,并不断检查表中是否有新字段。此服务将创建一个报告,在创建过程中,它应更新表字段以指示进度。 您的ASP.net页面可能正在显示进度条,使用ajax请求从db获取进度指示,或者只是每隔几秒刷新一次页面。
如果您在Windows Azure云上运行,则可以使用WebWorker而不是Windows服务
对于页面上的屏幕锁定,您可以使用jquery Block-UI库