通过 Azure Functions 处理 Azure 事件中心事件与使用 Azure.Messaging.EventHub SDK 的 .NET 控制台应用程序相比,有什么实际区别吗?

Handling Azure Event Hub events via Azure Functions vs .NET Console App using Azure.Messaging.EventHub SDK, any practical differences?

我的应用程序需要一个后台服务来持续接收和处理从 Azure 事件中心流式传输的事件。

我看到 Azure Functions 为此内置了触发器,但问题是我的应用程序是用 .NET 5 编写的,而 Azure Functions 对它的支持目前还相当不成熟。

我还从this documentation看到.NET有现成的SDKAzure.Messaging.EventHubs。我的理解是,这将 运行 作为控制台应用程序。

我已经在使用 Azure 应用服务(Linux 计划)来托管主 Web 应用。

因此,如果我使用 Azure.Messaging.EventHubs 创建控制台应用程序,我想将其部署为类似 Web 作业的东西,但 Linux 应用程序服务计划不支持它。我想我可以将控制台应用程序部署到单独的 Windows 应用程序服务计划。

下一个最佳选择是什么?与使用 Azure Functions 相比有任何实际差异吗?

还有这个 .NET Core Worker Service,它针对后台服务进行了更优化。我想知道在这个用例中是否有它的位置。

这些选项让我有点困惑。非常感谢您的建议。

Azure function应该是最好的选择。它具有内置的 eventhub 触发器和处理逻辑,并且易于设置/配置(如通过 Application Insights 进行日志记录)/编写的代码更少。最近(2021 年 3 月 10 日),it is supported for running production .NET 5 apps on Azure Functions。建议大家试一试,没问题就可以使用

对于azure webjobs,在这种情况下,如果您直接使用SDK,则需要编写许多代码并配置诸如日志之类的东西。

对于.NET Core Worker Service,如果要用的话也可以发布为azure webjobs。您可以关注 this doc 如何将辅助服务发布为 azure webjob。