你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 中选择合适的集成和自动化服务
本文比较了以下 Microsoft 云服务:
- Microsoft Power Automate(以前称 Microsoft Flow)
- Azure 逻辑应用
- Azure Functions
- Azure 应用服务 WebJobs
所有这些服务都可以解决集成问题并自动化业务流程。 它们都可以定义输入、操作、条件和输出。 可以在日程安排或触发器中运行其中一个。 每种服务都有其独特的优点,本文将介绍这些差异。
注意
如要了解 Azure Functions 和其他 Azure 计算选项之间更常规的对比,请参阅以下文章:
有关 Azure 中自动化服务选项的摘要和比较,请参阅在 Azure 中选择自动化服务。
比较 Azure 逻辑应用和 Microsoft Power Automate
这两项服务均是以设计器为核心的集成平台,便于生成和运行自动化工作流。 这两个平台均与各种服务型软件 (SaaS) 和企业应用程序集成。 两者都提供类似的工作流设计器,虽然部分连接器相同,但各自也拥有独一无二的连接器。
运用 Power Automate,企业用户、员工和平民开发者无需与 IT 或开发人员合作或编写代码,即可构建简单的集成。 可能的示例包括 SharePoint 文档库的审批工作流。 Azure 逻辑应用支持各种集成,从少代码、无代码方案到更复杂、更高级的编码工作流,皆支持。 示例包括 B2B 流程或方案,该类方案要求与 Azure DevOps 进行企业级交互。 企业工作流也会随时间逐步完善。
为帮助确定是要使用 Azure 逻辑应用还是 Power Automate 进行特定集成,请参阅功能比较表。
比较 Azure Functions 和 Azure 逻辑应用
借助这些 Azure 服务,你可以生成和运行无服务器工作负载。 Azure Functions 是一种无服务器计算服务,而 Azure 逻辑应用是一种无服务器工作流集成平台。 两者都可以创建复杂的业务流程。 业务流程是 Azure 逻辑应用中的函数(也称为“操作”)集合,你可以运行它来完成复杂的任务。 例如,若要处理一批订单,可以并行执行某个函数的许多实例,等待所有实例完成,然后执行某个函数来计算聚合结果。
对于 Azure Functions,通过编写代码并使用 Durable Functions 扩展来开发业务流程。 在 Azure 逻辑应用中,你可以使用视觉设计器或编辑 Azure 资源管理器模板来创建业务流程。
可以在构建业务流程时混合搭配不同的服务。 例如,可以从逻辑应用工作流调用函数,并从函数调用逻辑应用工作流。 可以根据服务功能或你的个人喜好选择如何构建每个业务流程。 下表列出了这些服务之间的一些主要差异:
Durable Functions | Azure 逻辑应用 | |
---|---|---|
开发 | 代码优先(命令性) | 设计器优先(声明性) |
连接 |
-
十几个内置绑定类型 - 为自定义绑定编写代码 |
-
超过 1,400 个包含触发器和操作的预生成连接器 - 适用于 B2B 方案的 Enterprise Integration Pack - 自定义连接器 |
操作 | 每个活动都是一个 Azure 函数;为活动函数编写代码 | 超过 1,400 个包含触发器和操作的预生成连接器 |
监视 | Azure Application Insights |
-
Azure 门户 - Azure Monitor 日志 - Microsoft Defender for Cloud - 适用于标准工作流的 Azure Application Insights - 适用于标准工作流的运行状况检查 有关详细信息,请参阅监视 Azure 逻辑应用中的工作流。 |
Management |
-
REST API - Visual Studio |
-
Azure 门户 - Visual Studio Code - REST API - PowerShell - Azure CLI(标准工作流) - Azure CLI(消耗型工作流) |
执行上下文 | 可以在本地或在云中运行 | 可以在 Azure、本地 Visual Studio Code 或部分连接环境中运行。 有关详细信息,请参阅什么是 Azure 逻辑应用? |
比较函数和 WebJobs
与 Azure Functions 一样,包含 WebJobs SDK 的 Azure 应用服务是一项代码优先的集成服务,专为开发人员设计。 二者都是在 Azure 应用服务 上构建的,支持源代码管理集成、身份验证以及使用 Application Insights 集成进行监视等功能。
WebJobs 和 WebJobs SDK
可以使用应用服务的 WebJobs 功能,在应用服务 Web 应用上下文中运行脚本或代码。 WebJobs SDK 是一个为 WebJobs 设计的框架,可以简化为响应 Azure 服务中的事件而编写的代码。 例如,若要响应在 Azure 存储中创建映像 Blob 这一事件,可以创建一个缩略图。 WebJobs SDK 以 .NET 控制台应用程序的方式运行,可以部署到 WebJob。
WebJobs 和 WebJobs SDK 在一起使用时效果最佳,但也可在没有 WebJobs SDK 的情况下使用 WebJobs,反之亦然。 WebJob 可以运行任何在应用服务沙盒中运行的程序或脚本。 WebJobs SDK 控制台应用程序可以在运行控制台应用程序的任何位置运行,例如本地服务器。
比较表
Azure Functions 是在 WebJobs SDK 上构建的,因此共享许多相同的事件触发器以及到其他 Azure 服务的连接。 在选择 Azure Functions 还是选择带 WebJobs SDK 的 WebJobs 时,请考虑以下因素:
函数 | 带 WebJobs SDK 的 WebJobs | |
---|---|---|
使用自动缩放的无服务器应用模型 | ✔ | |
在浏览器中进行开发和测试 | ✔ | |
按使用付费定价 | ✔ | |
与逻辑应用集成 | ✔ | |
触发事件 |
计时器 Azure 存储队列和 Blob Azure 服务总线队列和主题 Azure Cosmos DB Azure 事件中心 HTTP/WebHook(GitHub、Slack) Azure 事件网格 |
计时器 Azure 存储队列和 Blob Azure 服务总线队列和主题 Azure Cosmos DB Azure 事件中心 文件系统 |
支持的语言 | C# F# Javascript Java Python PowerShell |
C#1 |
包管理器 | NPM 和 NuGet | NuGet2 |
1 WebJobs(不含 WebJobs SDK)支持 C#、Java、JavaScript、Bash、.cmd、.bat、PowerShell、PHP、TypeScript、Python 等语言。 WebJob 可以运行任何程序或脚本,只要该程序或脚本可以在应用服务沙盒中运行。
2 WebJobs(不带 WebJobs SDK)支持 NPM 和 NuGet。
总结
与 Azure 应用服务 WebJobs 相比,Azure Functions 可以进一步提高开发人员的工作效率。 它还提供更多的编程语言、开发环境、Azure 服务集成和价格选项。 大多数情况下,它是最佳选择。
下面两种方案可能最适合选择 WebJobs:
- 需要对侦听事件的代码(
JobHost
对象)进行更多的控制。 若要在JobHost
文件中自定义JobHost
行为,则 Functions 提供的方式有限。 有时候,需要执行的操作无法在 JSON 文件中通过字符串来指定。 例如,只有 WebJobs SDK 允许配置 Azure 存储的自定义重试策略。 - 你已经有需要为其运行代码片段的应用服务应用,且需要在同一 Azure DevOps 环境中同时管理它们。
对于其他需要运行代码片段来集成 Azure 或外部服务的方案,请选择 Azure Functions,而不是包含 WebJobs SDK 的 WebJobs。
Power Automate、逻辑应用、Functions 和 WebJobs 一起
并非只能选择其中的一种服务。 它们相互集成,也与外部服务集成。
Power Automate 流可以调用 Azure 逻辑应用工作流。 Azure 逻辑应用工作流可以在 Azure Functions 中调用函数,反之亦然。 例如,请参阅创建与 Azure 逻辑应用集成的函数。
随着时间的推移,Power Automate、Azure 逻辑应用和 Azure Functions 这些服务之间的集成体验会不断改进。 可以在一个服务中生成一个组件,并在其他服务中使用该组件。
有关集成服务的详细信息,请参阅以下文章:
- 利用 Azure Functions 和 Azure 应用服务实现集成方案,来自 Christopher Anderson
- 集成简化,来自 Charles Lamanna
- Azure 逻辑应用网上直播
- Power Automate 常见问题
后续步骤
首先创建第一个流、逻辑应用工作流或函数应用。 选择以下任一链接: