gpt4 book ai didi

Azure Webjobs 与 Azure Functions : How to choose

转载 作者:行者123 更新时间:2023-12-03 04:23:35 27 4
gpt4 key购买 nike

我创建了一些 Azure Webjobs使用触发器,我刚刚了解到 Azure Functions .

据我了解,Azure Functions 似乎与 Azure Webjobs 功能重叠,我很难理解何时在 Function 和 Webjob 之间进行选择:

  • 与 Webjobs 不同,Functions 只能被触发,它没有被设计为运行连续过程(但您可以编写代码来创建连续函数)。
  • 您可以使用多种语言(C#、node.js、python ...)编写 Webjobs 和函数,但您可以从 Azure 门户编写函数,因此开发测试和部署函数更容易、更快捷。
  • Webjobs 在应用服务 Web 应用程序、API 应用程序或移动应用程序的上下文中作为后台进程运行,而函数使用经典/动态应用程序服务计划运行。
  • 关于扩展,Functions 似乎提供了更多的可能性,因为您可以使用动态应用程序服务计划并且可以扩展单个功能,而对于 webjob,您必须扩展整个 Web 应用程序。

  • 所以肯定有价格差异,如果你有一个现有的网络应用程序正在运行,你可以使用它来运行一个网络作业而无需任何额外费用,但如果我没有现有的网络应用程序并且我必须编写代码来触发队列我应该使用 webjob 还是 Function ?

    当您需要选择时,是否还有其他注意事项需要牢记?

    最佳答案

    应用服务中有几个选项。我不会涉及逻辑应用或 Azure 自动化,它们也涉及这个领域。

    Azure 网络作业

    This article老实说是最好的解释,但我会在这里总结。

    On Demand WebJobs 又名。计划的 WebJobs 又名。触发的 Web 作业

    触发的 WebJobs 是在调用 URL 或当 schedule property is present in schedule.job 时运行一次的 WebJobs。 . Scheduled WebJobs 只是创建了 Azure Scheduler Job 以按计划调用 URL 的 WebJobs,但我们也支持 schedule 属性,如前所述。

    总结:

  • +按需执行/脚本
  • +预定执行
  • -必须通过 .scm 端点触发
  • -手动缩放
  • -始终需要 VM

  • 连续 Web 作业(非 SDK)

    这些作业永远运行,当它们崩溃时我们会唤醒它们。您需要启用 Always On 才能使它们正常工作,这意味着在基本层及更高层中运行它们。

    总结:
  • +可执行文件/脚本始终运行
  • -需要始终开启 - 基本层及以上
  • -始终需要 VM

  • 使用 WebJobs SDK 的连续 WebJobs

    从“WebJobs 功能”的角度来看,这些都不是什么东西。本质上,我们有这个针对 WebJobs 编写的甜蜜 SDK,它允许您根据简单的触发器执行代码。稍后我会更多地谈论这个。

    总结:
  • +可执行文件/脚本始终运行
  • +更丰富的日志记录/仪表板
  • +与长时间运行的任务一起支持触发器
  • -需要始终开启 - 基本层及以上
  • -缩放是手动设置的
  • -入门可能有点烦
  • -始终需要 VM

  • Azure Web 作业 SDK

    Azure WebJobs SDK 是一个完全独立于 WebJobs 平台功能的 SDK。它旨在在 WebJob 中运行,但实际上可以在任何地方运行。我们有客户以 worker 角色甚至在本地或其他云上运行它们,尽管支持只是尽力而为。

    SDK 只是让运行一些代码以响应某些事件并绑定(bind)到服务/等变得容易。容易。老实说,这在一些 docs 中得到了最好的介绍。 ,但它的核心是“事件”+“代码”性质。我们还做了一些很酷的可扩展性工作,但这对于核心目的来说是次要的。

    总结:
  • 这些大部分都是上面提到的
  • +你可以扩展和运行任何你想要的。完全控制。
  • - HTTP 的东西有点不稳定,但它有效

  • Azure 函数

    Azure Functions 就是要实现 WebJobs SDK 的核心目的,将其作为服务托管,并使其他语言的入门变得容易。我们还在这里介绍了“无服务器”概念,因为这样做很有意义 - 我们知道我们的 SDK 如何扩展,因此我们可以为您做智能的事情。

    Azure Functions 是一种高度管理的体验。我们不支持自带主机。目前,我们不支持自定义扩展,但我们正在研究它。我们对您可以做什么和不可以做什么有自己的看法,但对于我们启用的东西,它们很流畅,并且易于使用和管理。

    不过,我们为改进 Functions 所做的大部分“框架”工作都是通过 WebJobs SDK 完成的。例如,我们将为 WebJobs 上传一个新的 NuGet,它确实大大提高了日志记录的速度,这对 WebJobs SDK 用户具有巨大的性能优势。在将函数作为“WebJobs SDK 即服务”交付时,我们确实改进了很多体验问题。
  • +支持多种语言
  • +完全托管的动态扩展
  • +易于使用的门户,带有 UX 用于管理连接等。
  • -主机不可定制(尚未)
  • ~在单独的“应用程序”中运行,这需要在您的存储库中进行一些配置,但使长期维护更容易。
  • ~没有工具(还)一些工具现在处于 alpha 或预览中 - https://www.npmjs.com/package/azurefunctions
    (2017 年 2 月更新:
    Azure Functions 的 Visual Studio 工具现已提供预览版:https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/ )

  • 我可能有偏见,因为 Functions 是我们最新和最好的,但请随意以我的方式为 Functions 拍摄更多的缺点。

    我可能最终会发布一个博客,其中详细说明了一点,但我试图在本论坛中尽可能保持简洁。

    关于Azure Webjobs 与 Azure Functions : How to choose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610952/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com