代码之家  ›  专栏  ›  技术社区  ›  Paul Mignard

ASP.NET:处理大型报表的策略

  •  4
  • Paul Mignard  · 技术社区  · 15 年前

    可能不是特定于报告,但仍然。。。

    问题是,在某些情况下,该报告的长度可能超过40000条记录(我知道,没有人能够真正处理40000条数据记录,但报告就是这样),正如您所料,它会超时并抛出错误。

    问题是,处理和交付如此规模的报告的好方法是什么?我曾想过创建一个小型控制台应用程序,在Web服务器之外构建报告,但我有点不知所措,不知道应该朝哪个方向看?

    5 回复  |  直到 15 年前
        1
  •  6
  •   TLiebe    15 年前

    报告是否需要最新数据?如果没有,您可以考虑在夜间(或服务器不忙时)以PDF格式生成报告,并只提供指向PDF的链接。按照建议运行控制台应用程序的计划任务可以创建报告并将其输出到文件。许多报告工具(如Crystal Reports)允许您将报告导出为PDF或Excel电子表格。因此,您可以在完全不同的机器上生成报告,然后将其复制到web服务器。这可以让您每小时(或任何时间)更新一次报告,而无需在web服务器上增加这样的负载。

        2
  •  3
  •   Mark Redman    15 年前

    您可以让用户请求一份报告,然后让windows服务接收这些请求,生成报告并向用户发送电子邮件?(或者在站点上有某种ajax轮询脚本,在用户的报告准备就绪时通知用户?)

    您可以将其扩展到按重复间隔安排同一报告等。

        3
  •  2
  •   Community CDub    4 年前

    我将研究SQL Reporting Services(假设它在SQL Server上运行)。有几个交付选项可能更适合您的应用程序的需要(例如,您可以安排一个PDF或Excel文档每晚出现在某人的邮箱中)。

    StackOverflow团队还有一篇很棒的文章,它允许ASP.NET中的后台进程,前提是您可以经常生成此报告,而不是按需生成(可能每5-10分钟一次?)

    https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

        4
  •  0
  •   Chris Marisic    15 年前

    然后,您可以让“执行报告”按钮触发启动报告的请求,然后将它们移动到“处理报告”页面,在该页面中列出为它们排队/处理的所有报告。

        5
  •  0
  •   Adam Hutson    15 年前