使用 Microsoft.ServiceFabric.Services.Remoting 3.2.162 通过远程处理 V1 调用服务

Call service via remoting V1 with Microsoft.ServiceFabric.Services.Remoting 3.2.162

我有多项使用远程处理 V1 的服务和使用 V2_1 的新服务。

使用 Microsoft.ServiceFabric.Services.Remoting 版本 3.2.162 从 asp.net 核心 2.1 应用程序调用 V2_1 服务没有问题。 但是我不能调用 "old" V1 服务,因为它试图通过 V2_1 连接。第一次抛出异常:

NamedEndpoint 'V2_1Listener' not found in the address '{"Endpoints":{"":"DESKTOP-XX:33016+086fcdfa-9eba-49e0-8953-6fae844d8cf0-131779318708109471-d1b542d1-71bb-40a8-b22d-d0aabc9f4f5c"}}' for partition '086fcdfa-9eba-49e0-8953-6fae844d8cf0'

第二次就挂了,用了很多CPU次。

创建自定义 ServiceProxyFactory 的 workaround 不再有效,因为命名空间 Microsoft.ServiceFabric.Services.Remoting.V1 在 3.2.162

中被删除

所以我决定升级 V1 服务,在 upgrade steps 之后添加一个额外的 V2_1 侦听器。但在应对这一行之后再次:

 [assembly: FabricTransportServiceRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2_1 | RemotingListenerVersion.V1, RemotingClientVersion = RemotingClientVersion.V2_1)]

未找到 RemotingListenerVersion.V1。

我不能简单地将 V1 侦听器更改为 V2_1,因为其他服务依赖于它。

我该怎么办?是否可以同时使用 V1 和 V2_1?我在这里有点困惑。

我不敢相信它没有记录。

就我而言,我有一个面向 .NET Standard 2.0 的域项目,服务项目引用该包并面向 .NET 4.6.2。

因此,我更改了迁移计划:

  1. 确保 domain/interface 项目以完整的 .NET 框架为目标, 例如,.NET 6.4.2
  2. Added a V2_1 listener next to the current V1 listener.
  3. 更新了所有客户端,因此他们正在使用 V2_1
  4. 删除了 V1 侦听器并将我们的项目切换回 .NET Standard