我在MVC C#Web项目中有一些报告,它们工作正常。但我注意到,在实际网站上,人们倾向于选择大型报告日期范围和其他搜索条件,这将返回相当大的数据集。
由于整个站点位于一个项目中的一个IIS站点上,因此会导致站点的其余部分挂起,直到报告完成执行。
我只是想知道处理这种情况的最佳做法是什么?
是否使用自己的IIS站点将报告移动到他们自己的项目中,并以某种方式从我的主站点指向它?
是否要使报告异步?
我可以使用视图/存储过程,但我想远离它们。
答案 0 :(得分:2)
生成报告不应该使网站无法响应。 IIS能够同时处理多个请求,因此只有等待报告的请求才会被阻止/等待 - 只要网站仍有可用请求,对网站的任何新请求都可以正常工作。我认为默认是12个并发请求,如果所有请求都被采用,则进一步的请求将排队。
将async
和await
用于阻止/长时间运行的进程是很好的实践。执行此操作将在执行时“释放”请求,因此IIS可以在该过程完成之前提供另一个请求。