将 .net 核心服务迁移到 Azure 如何仅在需要时运行

问题描述

我是 Azure 的新手,正在查看大量不同的服务以供选择,以处理 Blob 存储文件夹中的各种文件我有一个 .net 核心 Windows 服务,它当前处理这些文件,在本地运行(也在本地运行文件),但需要在进行一些重构以使用新的 Db 模式后迁移到云。将文件放入 Blob 存储中很容易。

此服务只会在预定时间运行。我想我可以通过预定的 azure 函数调用它的方法,如果我将这些服务方法公开为 http 端点。我在正确的道路上吗?

问题:

  • 如何将服务托管在不必持续运行的容器中,并在有文件要处理时唤醒它?不确定我是否问对了问题
  • 如何确保 Azure 函数调用这些方法之一时,即发即忘,无需等待它完成。
  • 我看到 Webjobs 有一个带有“continious”或“on demand”选项的 runMode,这会不会像我想的那样,因为即使不处理文件,它也会降低一直运行的成本?

解决方法

您可以使用 blob 存储触发器,它将运行您的 Azure 函数:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob

请注意,如果您的 Azure Function 需要 10 分钟以上才能完成,则不能在消耗计划中运行它。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#timeout

您还可以将 Azure 函数设置为在计时器触发器上运行。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?tabs=csharp