【问题标题】:"Out of Band" Processing Techiniques for asp.net applicationsasp.net 应用程序的“带外”处理技术
【发布时间】:2010-09-07 18:06:40
【问题描述】:

Jeff 之前曾在博客中提到 using the cache 在他的网站上执行“带外”处理,但我想知道人们使用哪些其他技术来处理此类任务?

【问题讨论】:

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


    【解决方案1】:

    Windows 服务

    【讨论】:

      【解决方案2】:

      计划任务,或 cron 作业。

      【讨论】:

        【解决方案3】:

        几年前,我看到 Rob Howard 描述了一种使用 HttpModule 在后台处理任务的方法。它看起来不像使用缓存那么流畅,但在某些情况下可能会更好。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

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

                【讨论】:

                  【解决方案8】:

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

                  【讨论】:

                    【解决方案9】:
                    猜你喜欢
                    • 2010-11-17
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-05-18
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-04-11
                    相关资源
                    最近更新 更多