Удаленное взаимодействие службы Service Fabric с отслеживанием состояния, версия 2

У меня есть служба с отслеживанием состояния, вызываемая службой без сохранения состояния в .Net Standard Asp.net Core 2.0, работающей в Visual Studio 15.4. Я не могу заставить работать Service Remoting V2.

Старый код в службе Stateful, который работал для V1, больше недействителен.

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

Я пытался следовать этому tutorial, но пример относится к без сохранения состояния.

Я безуспешно пытался изменить код.

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

Также в руководстве нет инструкций о том, как и где использовать этот код.

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

Я застрял, может ли кто-нибудь показать мне, как заставить его работать?


person Francesco Cristallo    schedule 14.10.2017    source источник


Ответы (1)


В вашей службе с отслеживанием состояния в методе CreateServiceReplicaListeners используйте этот код:

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

И в файл, определяющий интерфейс вашей службы удаленного взаимодействия, добавьте следующее:

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

(например, чуть ниже списка пространств имен using.)

Добавьте конечную точку: <Endpoint Name="ServiceEndpointV2" />

И пересобираем клиента.

person LoekD    schedule 15.10.2017
comment
не могли бы вы дать некоторые подробности о том, как вызвать это после настройки? Как на стороне клиента. - person Choco; 23.11.2017
comment
Создайте ServiceProxy, используя URL-адрес службы и ключ раздела (если с отслеживанием состояния) docs.microsoft.com/en-us/azure/service-fabric/ - person LoekD; 24.11.2017
comment
Я сделал это, но до сих пор не работает. Этот ответ просто повторяет то, что описано в руководстве, упомянутом выше на docs.microsoft.com. - person Alex Marshall; 22.04.2018
comment
Важным моментом является то, что [сборка: FabricTransportServiceRemotingProvider (RemotingListener = RemotingListener.V2Listener, RemotingClient = RemotingClient.V2Client)] также должна быть добавлена ​​в сборку клиента, а не только службу. - person Maxim Alexeyev; 28.09.2018
comment
В итоге мне пришлось вернуть Microsoft.ServiceFabric.Services.Remoting.Runtime.ServiceRemotingExtensions.CreateServiceRemotingReplicaListeners (this); и наследуем от IService - person AlignedDev; 13.11.2019