我们有一个作为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标准库)。观察结果是:
Webjobs文档或nuget软件包的文档没有讨论将这些软件包用于本地Windows服务托管的计时器触发的作业,但似乎可以正常工作。
我遇到了一个类似的讨论:Ways to leverage single code base between Windows Service and Azure WebJob,但要解决的问题是针对prem和Azure使用两种不同的触发机制。我的测试表明,webjobs库可以同时用于两者。任何
任何人都可以建议仅使用webjobs软件包在Prem和Azure上工作是否可行,或者是否存在我只是不愿意在prem上运行的陷阱?
答案 0 :(得分:1)
以下是在本地运行时无法使用的内容:
1。如果工作量很大,则无法使用azure的自动缩放功能。
2。您无法查看job history。
3。您需要自己管理硬件资源。
如果这些事情对您不重要,则可以继续在本地使用。
希望有帮助。