针对asp.net应用程序的“Out of Band”处理技术

时间:2008-09-03 23:25:47

标签: asp.net background scheduled-tasks out-of-band

杰夫之前在博客上发表了关于using the cache在他的网站上进行“带外”处理的博客,但是我想知道人们用什么其他技术来处理这些类型的任务?

9 个答案:

答案 0 :(得分:7)

多年前,我看到Rob Howard描述了一种使用HttpModule在后台处理任务的方法。它看起来并不像使用Cache那样光滑,但在某些情况下可能更好。

This blog post 有详细信息,如果您环顾四周,还有许多其他信息可以捕获相同的信息。

答案 1 :(得分:4)

Windows服务

答案 2 :(得分:3)

您可能想看看DotNetNuke是如何做到的。我知道它是用VB.NET编写的,但我将代码改装成C#。我正在仔细阅读源代码,并注意到他们在管理区域中有一项功能来设置计划任务。这些任务通过管理界面进行设置并存储在数据库中。当站点启动时,通过Global.asax文件,他们要么创建另一个线程来运行此服务,然后在预定的时间运行计划任务。我不记得确切的逻辑,它已经有一段时间了,但它绝对是其他人如何为Asp.Net应用程序完成带外进程的一个很好的资源。这种技术仍然保留了Asp.Net应用程序中的逻辑,但在我看来,它在带外运行。

答案 3 :(得分:1)

如果它主要是数据处理任务并且您正在使用MSSQL,那么计划的SSIS任务如何?

答案 4 :(得分:1)

答案 5 :(得分:0)

计划任务或cron作业。

答案 6 :(得分:0)

计划任务或cron作业的问题在于它们不与Web服务器共享内存空间。您可以设置从Web服务器请求页面的计划任务,但这可能会导致长时间运行的任务出现问题。在实际的ASP.Net应用程序堆栈上运行一些低优先级线程来执行简单的实用程序任务(如清理缓存,监视资源以及处理常规内务管理)会很不错。

答案 7 :(得分:0)

简单队列文件以及单独的代理。对于每种类型的带外进程,编写一个单独的代理.exe,它监视目录中的队列文件,其中包含执行指定进程所需的任何数据。

这可能看起来很脏但是在现实世界中我发现它提供了很大的灵活性,你没有在ASP.net进程空间中进行大量处理,你可以很容易地将这种风格适应农场处理到便宜的Linux当您开始需要更多RAM / CPU /磁盘时,服务器在Mono上运行代理进程。

答案 8 :(得分:0)

如果您对asp.net页面最满意,可以编写一个小应用程序来处理您的工作,然后使用监控您网站的外部服务“ping”该应用程序。这将使应用程序保持活力。