Azure Webjobs 与 Azure Functions:如何选择

2024-03-06

我创建了一些Azure 网络作业 https://azure.microsoft.com/en-us/documentation/articles/websites-webjobs-resources/使用触发器,我刚刚了解到Azure 函数 https://azure.microsoft.com/en-us/documentation/services/functions/.

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

  • 与 Webjobs 不同,函数只能被触发,它没有被设计为运行连续过程(但您可以编写代码来创建连续函数)。

  • 您可以使用多种语言(C#、node.js、python ...)编写 Webjobs 和函数,但您可以从 Azure 门户编写函数,以便更轻松、更快速地开发测试和部署函数。

  • Webjobs 在应用服务 Web 应用程序、API 应用程序或移动应用程序的上下文中作为后台进程运行,而 Functions 使用经典/动态应用程序服务计划运行。

  • 关于扩展,函数似乎提供了更多可能性,因为您可以使用动态应用程序服务计划,并且可以扩展单个函数,而对于网络作业,您必须扩展整个网络应用程序。

因此,肯定存在定价差异,如果您正在运行现有的网络应用程序,则可以使用它来运行网络作业,而无需任何额外费用,但如果我没有现有的网络应用程序,并且我必须编写代码来触发队列我应该使用网络作业还是函数?

当您需要选择时,还有其他需要考虑的因素吗?


Answer recommended by Microsoft Azure /collectives/azure Collective

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

Azure 网络作业

本文 https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/老实说,这是最好的解释,但我会在这里总结一下。

按需 WebJobs 又名。预定的 WebJobs 又名。触发式 Web 作业

触发式 Web 作业是在调用 URL 或调用 URL 时运行一次的 Web 作业Schedule 属性存在于 Schedule.job 中 https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/#CreateScheduledCRON。计划的 WebJobs 只是创建了 Azure 计划程序作业以按计划调用我们的 URL 的 WebJobs,但我们也支持计划属性,如前所述。

Summary:

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

连续 WebJobs(非 SDK)

这些作业会永远运行,当它们崩溃时我们会唤醒它们。您需要启用“始终开启”才能使它们正常工作,这意味着在基本层及以上层运行它们。

Summary:

  • +可执行文件/脚本始终运行
  • -需要始终开启 - 基本层及以上
  • -虚拟机始终是必需的

使用 WebJobs SDK 进行连续 WebJobs

从“WebJobs 功能”的角度来看,这些都不算什么。本质上,我们有这个针对 WebJobs 编写的甜蜜 SDK,它可以让您基于简单的触发器执行代码。稍后我会详细讨论这个问题。

Summary:

  • +可执行文件/脚本始终运行
  • +更丰富的日志记录/仪表板
  • +支持触发器以及长时间运行的任务
  • -需要始终开启 - 基本层及以上
  • -缩放比例需要手动设置
  • -开始使用可能会有点烦人
  • -虚拟机始终是必需的

Azure Web 作业 SDK

Azure WebJobs SDK 是与 WebJobs 平台功能完全独立的 SDK。它被设计为在 WebJob 中运行,但实际上可以在任何地方运行。我们的客户在工作人员角色上运行它们,甚至在本地或其他云上运行它们,尽管支持只是尽力而为。

SDK 只是为了方便地运行一些代码来响应某些事件并绑定到服务等。简单的。老实说,这在一些内容中得到了最好的介绍docs https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-get-started/,但其核心在于“事件”+“代码”本质。我们还做了一些很酷的可扩展性工作,但这对于核心目的来说是次要的。

Summary:

  • 大部分都是上面提到的
  • +您可以扩展并运行任何您想要的内容。完全控制。
  • -HTTP 的东西有点奇怪,但它确实有效

Azure 函数

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

Azure Functions 是一种管理严格的体验。我们不支持自带主机。目前,我们不支持自定义扩展,但我们正在调查这一点。我们对你能做什么和不能做什么有自己的看法,但对于我们支持的事情,它们很灵活,并且易于使用和管理。

不过,我们为改进 Functions 所做的大部分“框架”工作都是通过 WebJobs SDK 进行的。例如,我们将上传一个新的用于 WebJobs 的 NuGet,这确实大大提高了日志记录的速度,这对 WebJobs SDK 用户来说具有巨大的性能优势。在将 Functions 作为“WebJobs SDK 即服务”提供时,我们确实改善了很多体验问题。

  • +支持多种语言
  • +完全托管、动态扩展
  • +易于使用的门户,带有用户体验,用于管理连接等。
  • -主机不可定制(尚)
  • ~在单独的“应用程序”中运行,需要在存储库中进行一些配置,但使长期维护变得更加容易。
  • ~还没有工具 一些工具现在处于 alpha 或预览阶段 -https://www.npmjs.com/package/azurefunctions https://www.npmjs.com/package/azurefunctions(2017 年 2 月更新: Visual Studio Tools for Azure Functions 现已提供预览版:https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/ https://blogs.msdn.microsoft.com/webdev/2016/12/01/visual-studio-tools-for-azure-functions/)

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

我可能最终会发布一个博客来详细说明一些内容,但我试图在这个论坛上尽可能保持简洁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure Webjobs 与 Azure Functions:如何选择 的相关文章

随机推荐

  • 找不到记录器“apscheduler.scheduler”的处理程序

    from apscheduler scheduler import Scheduler import os class ListHref def init self print In ListHref Class self name hre
  • 如何计算 pandas 中每个唯一值的出现次数

    我有一个大的 pandas 数据框 我想计算其中每个唯一值的出现次数 我尝试遵循 但需要花费大量时间和内存使用量 我怎样才能以Pythonic的方式做到这一点 pack for index row in packets iterrows p
  • 动态禁用 jQuery Datepicker 图标

    我对 jQuery 相当陌生 并且我一直在寻找一个像样的免费日期选择器有一段时间了 我对 jQuery UI 的日期选择器非常满意 但我遇到了障碍 我使用它的项目要求我在文本框旁边有一个图标 虽然这相当简单 但我不知道如何动态禁用该图标 有
  • 在 MATLAB 中单击图像时从指针获取索引值

    如何找到点击点的索引并将其添加到数组 列表或向量的末尾 h figure image result locx locy while ishandle h pos get 0 PointerLocation locx end 1 pos 1
  • RuntimeException:在注册表中找不到应用程序“”。

    背景 目标 我尝试在 Windows 7 64 位上安装 Simics Tools for Eclipse 插件 我正在使用 Eclipse Indigo for Java 64 位 为了解决这个问题 我决定在当前设置旁边安装 32 位版本
  • 将 LWJGL java 应用程序放入 jpanel 或 canvas 中

    随着 lwjgl 3 的新更新 类 Display 不存在 我到处搜索 但找不到任何有关如何将所有 lwjgl 应用程序放入 jpanel 或画布或类似内容的内容 我已经想过使用像 twl 这样的 opengl gui 但这会让一切变得更加
  • iOS 6 中的分段控件tintColor

    我有一个有 8 段的分段控件 我可以更改整个控件的默认色调 但是我可以为控件中的每个部分设置不同的颜色吗 我找到了一个在 5 1 中使用的教程 其中有一个调用此方法的新类 void setTintColor UIColor color fo
  • onCreate 流程在 finish() 之后继续

    我想从内部完成一项活动onCreate方法 当我打电话时finish onDestroy 不会立即调用 代码不断流过finish onDestroy 直到之后才被调用onCreate 右大括号 Per the onCreate 描述位于de
  • 展开两个大数据文件并使用data.table应用?

    我正在尝试将函数应用于两个数据集df1 and df2 where df1包含 a b 并且可以有 100 万行长 并且df2包含 x y z 并且可以非常大 从 100 到 gt 10 000 我想应用一个函数foo对两个数据集的每个组合
  • SwiftUI ForEach 'identified(by:)' 已弃用。使用 ForEach(_:id:) 或 List(_:id:)

    在 XCode 11 beta 4 上 以下内容似乎已被弃用 我不知道如何重写它 有谁知道如何使用ForEach id State private var showTargets id 1 state false x 109 28 y 10
  • 永远的nodejs:如何运行我的npm应用程序

    现在我正在运行我的 Node js 应用程序npm start 我想在后台运行它 我发现forever包 但不知道如何运行我通常运行的应用程序npm start 那么我怎样才能使用它来运行它forever 我跟随this SO https
  • jqGrid 有 CDN 吗?

    谁知道有没有CDNjqGrid http www trirand com blog Thanks Here is JQgrid 的 CDN http www jsdelivr com jqgrid 不过 不是最小版本 http www js
  • Laravel 上的 Amazon S3 ERR_INSECURE_RESPONSE

    我在我的子域上使用 Laravel 框架sub example com尝试为我网站的所有图片实现与 Amazon S3 的连接 这是我的存储桶政策 bucket 1 Id Policy Version 2012 10 17 Statemen
  • 在 Woocommerce 的某些页面上添加产品 ID 的星级评级

    有没有办法在自定义页面 自定义位置调用特定产品的星级 换句话说 我是否可以添加特定 T 恤的星级 以显示在主页上该 T 恤图片的下方 我想我需要向编辑器添加某种 php 然后通过某种 html 调用它 我看见这个回答的话题 https st
  • python 阿拉伯语编码问题

    我有一个带有 windows 1256 编码的文本 现在我想将文本从阿拉伯语 windows 1256 转换为utf 8 示例文本 result 我用这个代码来解码和编码为utf 8 coding utf 8 data print data
  • 使用 pcapdotnet 将数据包拆分为 2 个数据包

    如何使用 pcapdotnet 将一个数据包分成两个数据包 这是我尝试过的 但不知道是否正确 public IEnumerable
  • 通过 JIRA REST API 从自定义字段获取值

    我想获取自定义字段的所有下拉选项 对于系统字段 我使用以下 URI http localhost 8080 rest api 2 project XXXX components http localhost 8080 rest api 2
  • Flutterfire 抛出 dart not found 错误

    我正在关注 flutter firebase codelab 并且我一直在我的 android 应用程序中配置 firebase 我已经在我的计算机上全局安装了 flutterfire cli 并将 bin 导出到我的路径中 export
  • 获取R中的所有组合,允许重复

    内置的combn只给出一半的组合 gt t combn 1 5 2 1 2 1 1 2 2 1 3 3 1 4 4 1 5 5 2 3 6 2 4 7 2 5 8 3 4 9 3 5 10 4 5 例如 没有 1 1 也没有 2 1 我怎样
  • Azure Webjobs 与 Azure Functions:如何选择

    我创建了一些Azure 网络作业 https azure microsoft com en us documentation articles websites webjobs resources 使用触发器 我刚刚了解到Azure 函数