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

关于背景: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作业。


推荐阅读

    程序执行linux命令?

    程序执行linux命令?,系统,工作,地址,环境,信息,管理,命令,文件,目录,程序,lin

    linux查看缓存命令?

    linux查看缓存命令?,系统,地址,网络,信息,第一,情况,命令,电脑,状态,标准,下

    linux命令批量执行?

    linux命令批量执行?,系统,代码,工作,周期性,数据,定期,环境,命令,文件,脚本,l

    linux执行退出命令?

    linux执行退出命令?,档案,状态,工作,命令,信息,地址,电脑,系统,编辑,文件,lin

    linux中后台执行命令?

    linux中后台执行命令?,系统,状态,暂停,灵活,电脑,网络,服务,第一,名字,命令,l

    linux执行线程命令?

    linux执行线程命令?,系统,工作,线程,软件,服务,管理,信息,环境,名称,命令,lin

    linux执行多条命令?

    linux执行多条命令?,数据,通信,管理,系统,命令,标准,信息,工具,代码,环境,Lin

    刷新缓存linux命令?

    刷新缓存linux命令?,系统,地址,工作,情况,工具,信息,盘中,状态,数据,命令,Lin

    linux退出命令未执行?

    linux退出命令未执行?,服务,工具,代码,环境,数据,官网,命令,用户,脚本,字符

    linux动态执行命令?

    linux动态执行命令?,时间,信息,名字,工作,网上,业务,工具,对比,地址,下来,如

    linux命令执行次数?

    linux命令执行次数?,时间,系统,地址,命令,数据,管理,工具,信息,环境,历史,lin

    linux命令一起执行?

    linux命令一起执行?,系统,标准,设备,地方,软件,代码,网站,网络,周期性,命令,l

    查看执行的命令linux?

    查看执行的命令linux?,系统,地址,信息,工作,命令,灵活,网络,名称,情况,状态,

    linux导出执行命令?

    linux导出执行命令?,数据,系统,命令,下来,位置,时间,工具,服务,文件,指令,lin

    linux持续执行命令?

    linux持续执行命令?,连续,定期,密码,系统,状态,命令,任务,文件,程序,前台,lin

    linux隐藏执行的命令?

    linux隐藏执行的命令?,工作,电脑,系统,地址,标准,信息,管理,命令,目录,软件,

    linux在哪执行命令?

    linux在哪执行命令?,电脑,命令,第一,第三,名字,系统,密码,脚本,终端,方法,怎

    js执行linux命令行?

    js执行linux命令行?,密码,系统,服务,项目,环境,工具,软件,设备,管理,平台,lin

    怎么执行linux命令行?

    怎么执行linux命令行?,系统,软件,工具,首页,终端,密码,环境,基础知识,官方

    linux命令行登陆网站?

    linux命令行登陆网站?,网站,系统,密码,服务,地址,环境,网络,软件,状态,项目,