【问题标题】:Service Fabric .net core remoting using version 2.1使用 2.1 版的 Service Fabric .net 核心远程处理
【发布时间】:2019-09-26 23:38:31
【问题描述】:
    I'm trying to get started with learning Service Fabric. Most of the tutorials and demo's referring to remoting being the fastest form of communication between services and the easiest to do.  

    I followed the documentation found here focusing on the part about using the newer version 2.1
    [Service Remoting](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting#call-remote-service-methods)

    I did find out through other sources that v1 is restricted to .net framework, and V2 to .net core.  Version 2 also makes use of an attribute.  The instructions seem to make it fairly clear even though they only cover how to do it with a stateless service.  I did find a couple of articles that gave snippets about how to get it to work with Stateful services and it is a bit different but not much.  Still something isn't working as whenever I try to talk with it I get an "Invalid name url" exception.

我在这里发布了我的项目中所有看似相关的部分。

我想我已经接近这个了,但我找不到任何完整的示例项目来帮助我弄清楚我缺少什么。
''' 使用 Microsoft.ServiceFabric.Services.Remoting.V2.FabricTransport.Runtime; 使用 Microsoft.ServiceFabric.Services.Remoting.FabricTransport; 使用 Microsoft.ServiceFabric.Services.Remoting; 使用 Microsoft.ServiceFabric.Services.Runtime; 使用 System.Fabric; 使用 Microsoft.ServiceFabric.Services.Communication.Runtime;

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

        namespace TestStatefulService
        {
        public class TrialService : StatefulService, ITestStatefull
        {
            public TrialService(StatefulServiceContext context)
                : base(context)
            {
            }
            public Task<string> HelloWorld()
            {
                return Task.FromResult("Hello World");
            }

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

'''
<Resources>
    <Endpoints>
      <!-- This endpoint is used by the communication listener to obtain the port on which to 
           listen. Please note that if your service is partitioned, this port is shared with 
           replicas of different partitions that are placed in your code. -->
      <Endpoint Name="ServiceEndpoint" />

      <!-- This endpoint is used by the replicator for replicating the state of your service.
           This endpoint is configured through a ReplicatorSettings config section in the Settings.xml
           file under the ConfigPackage. -->
      <Endpoint Name="ReplicatorEndpoint" />
      <Endpoint Name="ServiceEndpointV2_1" />
    </Endpoints>
  </Resources>
'''

'''
[assembly: FabricTransportServiceRemotingProvider(RemotingListenerVersion = RemotingListenerVersion.V2_1, RemotingClientVersion = RemotingClientVersion.V2_1)]
namespace P4PInterfaces
{
    public interface ITestStatefull : IService
    {
        Task<string> HelloWorld();
    }
}
'''


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

                ITestStatefull service = proxyFactory.CreateServiceProxy<ITestStatefull>(new Uri("fabric:/P4PSF/TestStatefulService/"), new ServicePartitionKey(1));

                var hello = await service.HelloWorld();
'''

【问题讨论】:

    标签: c# azure azure-service-fabric service-fabric-stateful


    【解决方案1】:

    结果证明我显示的代码很好。我遇到的问题是定义了多个侦听器但未正确设置,因此 Service Fabric 变得混乱。

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2017-08-31
      • 2018-08-17
      • 2017-07-26
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2018-09-24
      • 2018-03-26
      相关资源
      最近更新 更多