我们应该将 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
库。这是出于以下原因:
- 它是开源的。您可以查看路线图、当前问题、提交您自己的问题,如果您需要,您可以使用 MIT 许可证访问代码。
- 它使用 .NET 标准。如果您的解决方案更改为 .NET Core 或任何其他 .NET 运行时,您可以继续使用您的事件中心代码。
- 这是微软以后会重点强调的库。虽然这是我的假设,但这就是我认为的原因:
- docs.microsoft.com 入门示例使用新库。 https://docs.microsoft.com/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send
- 微软已经看到了开源开发的好处,他们几乎所有的 Azure 库都是开源的。即 Service Fabric 也刚刚开源:https://blogs.msdn.microsoft.com/azureservicefabric/2018/03/14/service-fabric-is-going-open-source/
- 创建新的库是为了替换旧的库。虽然 Microsoft 非常擅长支持旧的/遗留的库,但最终目的是替换旧的库。 https://azure.microsoft.com/blog/event-hubs-dotnet-standard-client-reaches-ga/
添加一些上下文以使本指南现代化,因为 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 中找到,以帮助从旧版本升级。
上下文
我们目前正在使用 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
库。这是出于以下原因:
- 它是开源的。您可以查看路线图、当前问题、提交您自己的问题,如果您需要,您可以使用 MIT 许可证访问代码。
- 它使用 .NET 标准。如果您的解决方案更改为 .NET Core 或任何其他 .NET 运行时,您可以继续使用您的事件中心代码。
- 这是微软以后会重点强调的库。虽然这是我的假设,但这就是我认为的原因:
- docs.microsoft.com 入门示例使用新库。 https://docs.microsoft.com/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send
- 微软已经看到了开源开发的好处,他们几乎所有的 Azure 库都是开源的。即 Service Fabric 也刚刚开源:https://blogs.msdn.microsoft.com/azureservicefabric/2018/03/14/service-fabric-is-going-open-source/
- 创建新的库是为了替换旧的库。虽然 Microsoft 非常擅长支持旧的/遗留的库,但最终目的是替换旧的库。 https://azure.microsoft.com/blog/event-hubs-dotnet-standard-client-reaches-ga/
添加一些上下文以使本指南现代化,因为 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 中找到,以帮助从旧版本升级。