从 Web 作业调用 Web API 还是使用 class?

Calling Web API from Web Job or use a class?

我正在 Azure 上创建 Web 作业,目的是处理一些工作负载并在我的网站上执行服务器后台任务。

我的网站有几个 Web API 方法供我的网站使用,但我也希望 Web 作业在完成后执行与 Web API 方法相同的任务。

我的问题是,我应该让 Web Job 调用此 Web API(如果可能),还是应该将 Web API 代码移动到 Class 并让Web API 和 Web Job 都称之为 class?

我只是想知道这里的正常做法是什么。

谢谢

我建议您将通用逻辑放在一个 dll 中,让它们共享该库,而不是试图让 webjob 调用 webapi。

我认为这将是获得所需内容的简单方法(此外,它还可以帮助您将内容分开以便共享 - 而不是在您的 webapi 中放置太多逻辑)。

我认为这是玩家的选择。如果您选择以这种方式部署,两者都将 运行 在 Azure 中的相同实例上。您可以通过对 API 进行内部测试来重用,也可以通过 .dll 共享 class 来重用。我们开始时喜忧参半,但随着我们使用的 Web 作业数量变得 bigger/more 变得复杂,我们最终选择了 API 内部测试。这里有几个原因。

  • 与 API
  • 使用的 libraries/code 没有耦合
  • 仅依赖于 API 和我们为其选择的任何其他库
  • 更容易将 Web 作业移动到它自己的解决方案中
  • 几乎免费 API 测试(通过我们自己的客户端测试 API)
  • 我们已经在 API(更多重用)
  • 中设置了日志记录和其他问题

尽管在现实中两者都有效,但它实际上归结为管理依赖项和 app/solution 的大小是您正在构建的。