用于报告的单独 C# 项目 - 最佳实践?

Separate C# Project for Reporting - Best Practice?

我在 MVC C# Web 项目中有一些报告,它们工作正常。但我注意到,在实时网站上,人们倾向于 select 较大的报告日期范围和其他搜索条件,这将 return 一个相当大的数据集。

由于整个站点位于一个项目的一个 IIS 站点上,这会导致站点的其余部分挂起,直到报告执行完毕。

我只是想知道处理这种情况的最佳做法是什么?

是否将报告移动到他们自己的 IIS 站点项目中,并以某种方式从我的主站点指向它?

是否使报告异步?

我可以使用 view/stored 程序,但我想远离它们。

生成报告不应使网站无响应。 IIS 能够同时处理多个请求,因此只有等待报告的请求才会 blocked/waiting -- 只要网站仍有可用请求,对网站的任何新请求都应该可以正常工作。我认为默认是12个并发请求,如果所有请求都被占用,则更多请求将排队。

对 blocking/long-running 进程使用 asyncawait 是很好的做法。这样做将 "release" 在执行时请求,因此 IIS 可以在进程完成之前为另一个请求提供服务。