首页 / 知识

关于背景:asp.net应用程序的“带外”处理技术

2023-04-14 03:33:00

关于背景:asp.net应用程序的“带外”处理技术

“Out of Band” Processing Techiniques for asp.net applications

Jeff以前曾在博客中发表有关使用缓存在其网站上执行"带外"处理的文章,但是我想知道人们正在使用其他哪些技术来处理这些任务?


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

这篇博客文章中有详细信息,如果您四处看看,还有许多其他捕获相同信息的信息。


Windows服务


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


  • 使用http://www.codeproject.com/KB/cs/tsnewlib.aspx或schtasks.exe计划的任务。
  • Quartz.NET
  • MSMQ
  • SQL Server作业
  • Windows服务
  • System.Threading.Timer或System.Timers.Timer
  • System.ComponentModel.BackgroundWorker
  • 异步调用和回调

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


如果您对ASP.NET页面最满意,则可以编写一个小应用程序来处理您的工作,然后使用监视网站的外部服务来" ping"该应用程序。这将使该应用程序保持活动状态。


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

这看起来似乎很脏,但是在现实世界中,我发现它提供了很大的灵活性,您在ASP.net进程空间中没有进行大量处理,并且可以轻松地采用这种样式来将处理场移植到运行Linux的廉价Linux服务器上。当您开始需要更多的RAM / CPU /磁盘时,Mono上的代理进程。


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


计划任务或cron作业。


应用程序博客执行网站

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢