Azure Functions与Logic Apps的区别

46

Azure FunctionsLogic Apps 是微软 Azure 提供的两个不同的服务。我想知道在什么情况下应该选择 Azure Functions,而不是 Logic Apps。


2
如果这个问题太泛泛了,可能会被标记,所以如果有必要,可以将其转移到msdn - Chris Anderson
8个回答

96

Azure Functions是由事件触发的代码

Logic Apps是由事件触发的工作流程

这意味着它们实际上是互补的。从昨天开始,您可以通过Logic Apps UX将函数作为逻辑应用程序中的工作流的一部分添加。

TL;DR - 这是Logic Apps + Functions,而不是Logic Apps或Functions。


4
答案标记为回答的帖子比其他帖子更有说服力。 - Sunny Sharma
2
嗯...逻辑应用是一系列操作,其中一个操作可以是Azure函数? - Next Developer
是的。您可以从逻辑应用中调用 Azure 函数。值得注意的是,逻辑应用也可以是另一个逻辑应用调用的操作。 :) - Chris Anderson
什么是“工作流程”? - endolith
工作流程是一系列定义任务、业务流程或工作负载的步骤。每个工作流程都以一个触发器开始,之后您必须添加一个或多个操作。请参考此链接:https://learn.microsoft.com/en-us/azure/logic-apps/logic-apps-overview#logic-app-concepts - Chris Anderson

33

以下是你可以在选择Azure Functions和Azure Logic Apps之间进行决策的一些用例。

Azure Functions:

  1. Azure Function是由事件触发的代码

  2. Azure Functions可以在本地工作站上开发和调试,这大大提高了开发人员的生产力

  3. 在处理执行更复杂逻辑的同步请求/响应调用时,Azure Function是首选选项

Logic Apps:

  1. Logic Apps是由事件触发的工作流

  2. Logic Apps仅在云中运行,因为它依赖于Microsoft管理的连接器。无法在本地调试、测试或运行Logic Apps。

  3. Logic Apps更适合于需要可靠处理的异步集成和发送并忘记消息。

Azure Functions具有足够的日志记录和故障排除功能,甚至可以构建自定义监视工具。Functions不依赖于云,也可以在本地运行。


我知道这个答案是在2018年发布的,而且自那时以来可能已经发生了变化,但我不确定逻辑应用程序下的第二点是否仍然完全正确。逻辑应用程序可以使用Visual Studio进行本地调试和测试。例如,请参见:https://www.c-sharpcorner.com/blogs/create-a-logic-app-in-vs-2019-and-publish-it-to-azure虽然,我想这取决于我们对“本地”一词的理解。VS是在本地访问的,但系统正在与云环境通信,并在Visual Studio中仅显示来自云的数据。执行是在云中运行的。 - StatsStudent

11

我想补充一些我的想法。

Azure Function Apps应该用于以下方面:

  • 高频率任务 - 免费提供1,000,000次执行和400,000 GB秒的内存,然后价格非常低。一旦您了解任何编码语言函数的支持,您可以以非常低的成本运行数百万次执行。
  • 非常容易与多个Azure服务绑定 - 虽然Logic Apps也很容易绑定外部服务,但如果要从logic app中高频率地执行,则需要花费一两美元。 函数还允许轻松地将输入和输出绑定到外部Azure服务。
  • 有状态执行 - 使用可持久性任务框架,您可以运行多个函数,执行扇入和扇出,并轻松编写有状态的执行。
  • 编程和脚本语言 - 如果您已经知道编程语言,那么函数可能是将一些应用程序迁移到云的简单方法,而只需进行最少的更改。

Azure Logic Apps应该用于以下方面:

  • 低频率 - 最大的原因是定价模型。 想象一下,好像逻辑应用中的单个操作是您要支付的费用,因为它是单独的执行。例如,如果您有1个逻辑应用程序,其中包含3个步骤,并且每10秒运行一次。这将是每分钟18个操作。 因此,每小时1080个,每天25920个。 如果这些3个操作连接到任何外部内容,即blob / http等,则它们是连接器,因此具有每天26,000个连接器运行的简单逻辑应用程序将使您每月获得100美元。与大多数函数可能不到1美元相比。
  • 结合许多外部服务/ API - 由于拥有200多个连接器,您可以轻松地组合多个服务,而无需学习API等等。 这是一个简单的TCO计算,编写X数量的API集成以开发人员的价格更好,还是只使用现成的连接器。
  • 设计非常出色的日志记录 - 借助可视化日志记录,很容易检查每个执行步骤的输入、输出、时间等。就好像您在Azure功能中记录了每一行一样。
  • 良好扩展其他服务,如Data Factory - 有些服务非常适合某些任务,但在其他任务方面并不那么好。例如,数据工厂无法开箱即用地发送电子邮件,但是您可以在10分钟内从数据工厂调用Logic App的HTTP Webhook,并轻松开始发送电子邮件。

简而言之,其他人所说的。 它们扮演不同的角色,应该如此使用。

总的来说,逻辑应用程序❤️函数

如果您想查看一些信息,我鼓励您检查


8

Logic Apps被用于自动化业务流程。它们通过几个开箱即用的连接器,使与云和本地系统集成变得容易。而Azure函数则响应事件执行操作,例如当消息添加到队列或blob时进行处理等。我想你甚至可以将Azure函数公开为HTTP API端点,并使用Logic Apps集成到您的业务流程中。

在我看来,另一个明显的区别是定价方式。Azure函数基于用于函数执行的计算和与函数关联的内存进行收费(https://azure.microsoft.com/en-us/pricing/details/functions/)。


2
两者都是事件驱动的。 - I Stand With Russia
1
即使对于逻辑应用,HTTP端点也可以被公开,当请求发送到该URL时,逻辑应用就会被触发。 - Muhammad Murad Haider

4
这个问题的答案在发布Azure Durable Functions之后可能已经发生了变化。 现在两个平台之间的重叠更大了。这两种服务都允许您构建无服务器工作流;Azure Durable Functions是基于代码的工作流,而Logic Apps是基于视觉设计的工作流。
当构建集成解决方案时,Logic Apps更适合,因为它们具有非常广泛的连接器列表,可以减少上市时间,并且喜欢使用丰富的视觉工具来构建和管理。
如果您需要或更喜欢具有强大编程语言的所有功能和灵活性,或者需要更多的可移植性,并且可用的绑定和日志记录功能足够,则Durable Functions更适合。
两个平台之间的详细比较在此帖子中

1
Logic Apps是微软提供的iPaas服务,可用于在云上创建易于实现的集成解决方案。它配备了一系列开箱即用的连接器,可用于集成本地和基于云的应用程序解决方案。而Azure函数可以用于快速在“云”上运行小代码片段或函数。Azure函数可以与Logic Apps集成,从Logic Apps内部运行代码片段。

1

我两者都使用得很多。对于简单的应用程序/ API,我更喜欢逻辑应用程序而不是Azure函数。逻辑应用程序的知识转移非常容易,因为下一个人只需要看图片即可。日志跟踪也已经内置。然而,当您有超过几个if-else或case条件或者有几个嵌套工作流程时,逻辑应用程序(和Flow)将变得混乱且难以阅读。逻辑应用程序中的错误处理也有很大的改进空间。


0

Azure Function Azure Function是一段在某些事件或时间触发的代码片段,可以进行调试,并且有几种可编程语言和编码选项,例如Visual Studio Code、Visual Studio和In-portal。

Logic app 它是一个工作流编排工具,类似于Azure Functions以类似的方式触发,但它是一个拖放工具,无法在其中编写代码。它提供了大量操作来执行功能,主要用于集成系统。

这两个系统都基于服务器架构,但Azure Logic App易于开发和调试,但范围有限。如果您需要许多定制逻辑,则应选择Azure Function。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接