0

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

使用 Microsoft.ServiceFabric.Services.Remoting 版本 3.2.162 从 asp.net core 2.1 应用程序调用 V2_1 服务没有问题。但我不能调用“旧”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的解决方法不再起作用,因为命名空间 Microsoft.ServiceFabric.Services.Remoting.V1 在 3.2.162 中已删除

所以我决定升级一个 V1 服务,并按照升级步骤添加一个额外的 V2_1 侦听器。但是在处理完这条线之后再次:

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

未找到 RemotingListenerVersion.V1。

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

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

4

1 回答 1

1

.NET Core 不支持 Service Fabric Remoting V2。我不敢相信它没有记录。

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

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

  1. 确保域/接口项目以完整的 .NET 框架为目标,例如 .NET 6.4.2
  2. 在当前 V1 侦听器旁边添加了 V2_1 侦听器
  3. 更新了所有客户端,所以他们使用的是 V2_1
  4. 移除了 V1 监听器并将我们的项目切换回 .NET Standard
于 2018-08-08T19:58:52.603 回答