【问题标题】:Scheduling tasks for multiple asp.net projects为多个 asp.net 项目安排任务
【发布时间】:2016-02-02 03:36:47
【问题描述】:

实现跨多个 asp.net 项目运行作业的任务调度程序的最佳方法是什么?

我的意思是,例如,我有一个项目(项目 A)向 sftp 服务器发送文件,另一个项目(项目 B)向客户发送电子邮件。两者都需要自动化。最好的方法是什么?

我一直在研究并发现如果我可以安装 Windows 服务(我愿意),那么我应该这样做。但是怎么做?我是否在共享项目(Project Shared)中创建一个 IJobsInterface 并在 A 和 B 之间共享,让每个项目实现自己的 RunJob() 版本,然后将所有这些都引用到 Windows 服务(可能是控制台应用程序?)和每个实现执行 RunJob?我是否接近解决方案?

【问题讨论】:

  • 您可以使用操作系统的调度程序。有一个 .net 包装器:taskscheduler.codeplex.com 但这并不适合 asp.net 应用程序。
  • 当 Windows 中已经有一个非常好的任务计划程序时,为什么还要为您的东西安装另一个计划程序。除此之外,您的问题重新设计可以说主要是基于意见的
  • @SteveWellens 不需要 c# 包装器。 c# 可以直接与 COM 对象对话。只需将对 Micorosft TaskScheduler 的 COM 引用添加到您的 c# 项目
  • 感谢您的回复。我可能需要提一下,这个调度程序应该以特定的时间间隔运行,理想情况下不应该停止。如果我的应用程序由于某种原因终止并且我在所述项目中有一个任务调度程序,那么该调度程序是否也会停止?
  • 如果您使用 Windows 任务计划程序,它具有内置的重试功能。

标签: c# asp.net windows-services


【解决方案1】:

看看Revalee。这是一个开源项目,可让您安排对 ASP.NET 项目的 Web 回调。每个 ASP.NET 应用程序都将使用 Revalee.Client 库来安排回调(使用 Revalee 服务器)到您的各种 Web 应用程序;每个回调都是特定计划任务的“触发器”。更具体地说,每个客户端将向 Revalee 服务器注册未来的回调(即,一个单独的 Windows 服务应用程序,将运行一次)。

安排回调很简单:

DateTimeOffset callbackTime = new DateTimeOffset(...); // scheduled task trigger time
Uri callbackUrl = new Uri(...); // url to callback (your "job" code resides at this url)
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);

【讨论】:

    猜你喜欢
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2013-03-30
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多