Webjob 应用程序与 Web api 应用程序由控制台应用程序作为 Web 作业触发

Webjob application vs web api app triggered by console app as a web job

我有一个 Web api(.netcore),我在 Azure 中托管了一个应用服务。

我有另一个与上述相关的应用程序api(在同一个资源组中)需要每隔几分钟触发一次。

我的困惑是什么是最佳实践?

1) 为第二个应用程序编写一个webjob 应用程序(.net framework)。

2) 将第二个应用程序编写为 api 并编写一个控制台应用程序来调用 api。然后从 Azure 中的 webjobs 调用控制台应用程序。但这意味着同一资源组中的第二个应用程序服务(第二个 API)。

两者在价格上有区别吗?

两者相比有什么优势吗?

有没有更好的方法?

更新

我选择了第二个选项。

如果我使用下面的方法(成本和代码副)有什么优势。所以在同一个应用程序服务中会有一个 wep 应用程序,一个触发 api 的网络作业和另一个要读取的网络作业来自队列的消息进行处理。

编写在计时器上触发的服务有几个选项:

  1. WebJobs - 这些本质上是控制台应用程序,运行 在幕后执行您的 API 用户不需要等待的相关工作(照片处理是一个常见的例子)或需要按计划 运行,就像您的用例一样。
  2. A​​zure Functions - Functions 类似于 WebJobs,但可以更轻松地扩展和抽象化编码与许多其他服务的连接的必要性。如果您只是为 运行 他们创建应用服务,他们也可以具有计费优势。
  3. A​​zure 逻辑应用程序 - 我认为您需要 WebJobs 或 Functions,但逻辑应用程序也可以 运行 按计划执行作业。在这种情况下,您正在 JSON 文件或更可能是在 GUI 中设计您的工作流程。如果您的工作不需要太多自定义代码,使用逻辑应用程序意味着开发时间减少,您需要维护的自定义代码也少了。

定价:

  • 只要您有足够的资源来处理额外的负载,Webjobs 和 Functions 都可以附加到与您的 API 相同的应用服务帐户。所以那里没有额外费用。
  • 如果需要,您可以为 Webjob 支付一个单独的应用服务帐户,但通常它们与 API.
  • 保存在同一个应用服务帐户中
  • Functions 应用程序可以 运行 在具有 consumption plan 的特殊类型的应用程序服务帐户上。这意味着您无需按月付费,而是为实际使用的资源付费。
  • 逻辑应用未连接到应用服务,并且具有与函数类似的基于消费的计费。