2012-06-22 71 views
4

我们有一种情况,我们的web应用程序调用我们的webservice,而不是调用数据库存储过程来根据客户返回数据。 SP返回的行数为80万行,涉及SP中的JOIN,因此大约需要8-10秒。ASP.NET后台处理

我们已经决定,在Web服务结束时,我们将80万行放入缓存中,Web服务将从缓存中返回数据。后台线程将在15-20秒后一起工作并更新数据。

我想知道一些在ASP.NET 2.0中的背景处理的真实机制。

在此先感谢您的帮助和合作。

+2

如果你认真的返回800万行,那么你会犯这样的错误。这是对计算能力的巨大浪费,因为我永远不会相信你,你真的需要显示所有这些行。曾听说过一个叫“分页”的东西? – walther

+0

洛尔茨,我刚刚检查了我写了10倍,所以我已经修改为80万。 :) 我听说过关于分页,我们将只显示来自那80万个用户的25条记录。 –

+0

8M,* 00K,同样的事情...太多的数据。如果您一次只显示25行,则查询数据库中的25行。 –

回答

0

您可以使用HttpModule分离后台线程并缓存数据。这是一个blog post,它显示了如何完成你的建议。

0

您可以通过在Golbal.asx(Application_Start Event)中创建一个线程并且该线程为您完成工作来轻松完成此任务。此外,还有一些基于HTTPModule的实现以及一些基于缓存的实现,用于您想要实现的任务。

但是我不推荐以上任何内容,因为当应用程序池由于IDLE超时(或任何其他原因)而回收时它们全部停止工作。这里是所有这些问题的细节: -

http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx

我的建议是: - 1 - 创建一个Windows服务 2 - 创建一个简单的控制台应用程序和Windows 3它添加计划任务 - 在数据库中创建一个工作,将在一定的频率后执行。

详情请看看: -

http://zeeshanumardotnet.blogspot.com/2010/01/how-to-send-periodictimely-emails.html

+0

我不确定我们是否可以从Windows服务或控制台应用程序的Web服务器缓存中添加数据。 –

0

没有后台处理是要帮助这里。雇用一个新的数据库家伙,并确保他确实理解数据分页。查询25行数据无法花费10秒钟,这简直是疯了。