Service Fabric 有状态服务 Remoting V2

10

我有一个被无状态服务调用的有状态服务,在运行于Visual Studio 15.4上的.Net Standard Asp.net Core 2.0中。 我无法使Service Remoting V2工作。

旧的在有状态服务中可用于V1的代码 不再有效

  protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
    {
        return new List<ServiceReplicaListener>()
            {
                new ServiceReplicaListener((context) =>this.CreateServiceRemotingListener(context))
            };

我尝试跟随这个教程,但这个示例是针对无状态的。

我尝试更改代码但没有成功。

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
    {
        return new List<ServiceReplicaListener>()
            {
                new ServiceReplicaListener((c) =>new FabricTransportServiceRemotingListener(c, this))
            };
    }

此外,该教程中没有关于如何在哪里使用这段代码的说明。

var proxyFactory = new ServiceProxyFactory((c) =>
   {
       return new FabricTransportServiceRemotingClientFactory();
   });

我卡住了,有人可以演示一下如何使其正常工作吗?

1个回答

11

在您的有状态服务中,CreateServiceReplicaListeners 方法中,请使用以下代码:

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
    return this.CreateServiceRemotingReplicaListeners();
}

在定义您的远程服务接口的文件中,添加以下内容:

[assembly: FabricTransportServiceRemotingProvider(RemotingListener = RemotingListener.V2Listener, RemotingClient = RemotingClient.V2Client)]

(例如,在using命名空间列表的下方)。

添加端点:<Endpoint Name="ServiceEndpointV2" />

然后重新构建客户端。


你能详细说明如何在客户端调用一次设置好的内容吗? - Choco
使用服务URL和分区键(如果有状态)创建ServiceProxy https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting#call-remote-service-methods - LoekD
1
我已经做过这个了,但还是不行。这个答案只是重复了上面在learn.microsoft.com教程中的内容。 - Alex Marshall
重要的一点是,"[assembly: FabricTransportServiceRemotingProvider(RemotingListener = RemotingListener.V2Listener, RemotingClient = RemotingClient.V2Client)]" 应该被添加到客户端程序集中,而不仅仅是服务端。 - Maxim Alexeyev
最终我不得不执行 return Microsoft.ServiceFabric.Services.Remoting.Runtime.ServiceRemotingExtensions.CreateServiceRemotingReplicaListeners(this); 并从 IService 继承。 - AlignedDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接