在Windows服务和云中使用WebJobs和WebJobs扩展nuget

时间:2020-02-11 04:37:19

标签: azure windows-services azure-webjobs azure-webjobssdk azure-webjobs-triggered

我们有一个作为Windows服务运行的应用程序,正在迁移到Azure。 Windows服务连续运行,并在内部使用Quartz调度程序库触发使用cron表达式配置的不同作业。

Webjobs看起来很适合在云中托管此应用程序,但是Webjobs已经具有“ TimerTrigger”机制,与石英相比,它的cron表示集的丰富程度稍差但不足,我们应该理想情况下,从系统中完全删除石英,然后仅配置相同的“作业”即可运行为webjobs配置的触发器。 Microsoft.Azure.WebJobs和Microsoft.Azure.WebJobs.Extensions提供了足够的功能来执行此操作。到目前为止一切顺利。

同时,迁移还需要一段时间,因为还有50个其他应用程序和设计更改必须解决。在此期间,该应用程序将作为Windows服务在内部运行,并且在过渡期间,应能够在Prem和Azure中运行。

在我使用webjobs库进行工作时,我看到了可以完全删除Quartz库的经验证据,所有这些“作业”只能通过使用HostBuilder.ConfigureWebJobs配置的webjobs包中的“ TimerTrigger”触发,同时在Microsoft.Azure.WebJobs 3.0.14中,这是一个.net Framework 4.7.2应用程序(可以使用webjobs .net标准库)。观察结果是:

  1. 它可以在Azure Webjobs中正常工作
  2. 它也可以作为Windows服务在prem上正常运行,可以正常运行,并且所有触发器都可以从webjobs软件包中触发,并且可以很好地执行作业。

Webjobs文档或nuget软件包的文档没有讨论将这些软件包用于本地Windows服务托管的计时器触发的作业,但似乎可以正常工作。

我遇到了一个类似的讨论:Ways to leverage single code base between Windows Service and Azure WebJob,但要解决的问题是针对prem和Azure使用两种不同的触发机制。我的测试表明,webjobs库可以同时用于两者。任何

任何人都可以建议仅使用webjobs软件包在Prem和Azure上工作是否可行,或者是否存在我只是不愿意在prem上运行的陷阱?

1 个答案:

答案 0 :(得分:1)

以下是在本地运行时无法使用的内容:

1。如果工作量很大,则无法使用azure的自动缩放功能。

2。您无法查看job history

3。您需要自己管理硬件资源。

如果这些事情对您不重要,则可以继续在本地使用。

希望有帮助。