我们应该将 Microsoft.Azure.EventHubs.Processor 库与 .NET 框架一起使用吗

Should we use the Microsoft.Azure.EventHubs.Processor library with .NET framework

上下文

我们目前正在使用 Microsoft.Azure.ServiceBus.EventProcessorHost 从 Azure 事件中心获取数据。我们 运行 .NET framework,而不是 .NET Core.

Microsoft announcement (published Feb 2, 2017) suggests the newer Microsoft.Azure.EventHubs.Processor 是未来的发展方向,无论您使用什么 .NET 运行时间,因为他们将维护单一代码库。

同时,最近更新的官方 Microsoft Event-Hub samples 仍然建议 .NET 框架使用较旧的库 (Microsoft.Azure.ServiceBus.EventProcessorHost)。

自发布以来,这两个库都得到了更新和发展。

问题

由于我们使用 .NET 框架,我们应该使用哪个库?

我们是否应该迁移到较新的 Microsoft.Azure.EventHubs.Processor,以便从最新的开发、改进和错误修复中获益?还是旧版本跟上了速度?

这个问题也与新手有关,他们应该选择哪个库来开始使用 Azure Event-Hubs。

我的回答可能偏颇,但我更喜欢更新的 Microsoft.Azure.EventHubs 库。这是出于以下原因:

添加一些上下文以使本指南现代化,因为 Microsoft 已经围绕 Azure SDK 启动了一项新计划,其中包括一个新的事件中心客户端库。对于新开发,我们建议使用 Azure.Messaging.EventHubs 系列包和 Azure.[[ AREA ]].[[ SERVICE ]] 包来与其他 Azure 服务一起使用。

Azure.Messaging.EventHubs 是当前一代事件中心客户端库,将成为开发的重点,定期发布改进和新功能。它支持 netstandard2.0 平台,使其可以用于广泛的主机环境,包括 .NET 5、.NET Core 和完整的 .NET Framework。该库保留了与上一代 Microsoft.Azure.EventHubs 的高级功能对等性,但具有更离散的客户端层次结构和改进的 API.

Azure.Messaging.EventHubs 库是改善 Azure 服务开发体验计划的一部分。为此,它遵循一组统一的 design guidelines intended to drive a consistent experience across development languages and employ established API patterns for all Azure services. The library also follows a set of .NET-specific guidelines 以确保 .NET SDK 具有反映 .NET 基础 class 库的自然和惯用的感觉。

Azure.Messaging.EventHubs 库还提供了分享对 Azure 开发体验所做的一些跨服务改进的能力,例如统一诊断管道,提供跨每个服务的活动的通用视图客户端库。另一项重要改进是使用新的 Azure.Identity 库在不同 Azure 服务的客户端之间共享凭据,简化了身份验证体验。

虽然我们认为采用现代版本的事件中心客户端库有很大好处,但请务必注意,旧版本尚未正式弃用。他们将继续得到安全和错误修复的支持。但是,不太可能添加新功能,并且不能保证未来的现代版本和旧版本之间的功能对等。

有关 Azure.Messaging.EventHubs 库的更多信息可在其 README and [Samples)[https://github.com/Azure/azure-sdk-for-net/tree/master/sdk/eventhub/Azure.Messaging.EventHubs/samples). There is also a Migration Guide 中找到,以帮助从旧版本升级。