【问题标题】:Error while creating remote listener in service fabric stateful service (.NET Core application)在服务结构有状态服务(.NET Core 应用程序)中创建远程侦听器时出错
【发布时间】:2019-03-27 11:16:12
【问题描述】:

错误:不包含“CreateServiceRemotingListener”的定义,并且找不到接受第一个类型参数的扩展方法“CreateServiceRemotingListener”(您是否缺少 using 指令或程序集引用?)

以下是我遵循的步骤,

  1. 创建了一个实现 IService 的接口。

    `

        using Microsoft.ServiceFabric.Services.Remoting;
        using System.Threading.Tasks;
        public interface IFileService: IService
        {
            Task<string> GetStringByName(string name);
        }
    

    `

  2. 在名为 FileService 的有状态服务中包含以下包。

    `

     using System. Fabric;
        using Microsoft.ServiceFabric.Data;
        using Microsoft.ServiceFabric.Data.Collections;
        using Microsoft.ServiceFabric.Services.Communication.Runtime;
        using Microsoft.ServiceFabric.Services.Runtime;
    

    `

  3. 在FileService中实现了IFileService接口。

    `

     internal sealed class FileService : StatefulService, IFileService
        {
            public FileService(StatefulServiceContext context)
                : base(context)
            { }
            public FileService(StatefulServiceContext context, IReliableStateManagerReplica stateManagerReplica) : base(context, stateManagerReplica)
            {
            }
    
            public Task<string> GetStringByName(string name)
            {
                return Task.FromResult<string>(name);
            }
    
    
            /// <summary>
            /// Optional override to create listeners (e.g., HTTP, Service Remoting, WCF, etc.) for this service replica to handle client or user requests.
            /// </summary>
            /// <remarks>
            /// For more information on service communication, see https://aka.ms/servicefabricservicecommunication
            /// </remarks>
            /// <returns>A collection of listeners.</returns>
            protected override IEnumerable<ServiceReplicaListener> 
    
        CreateServiceReplicaListeners()
                {
                    return new[] { new ServiceReplicaListener(this.CreateServiceRemotingListener) };
                }}
    

    `

【问题讨论】:

    标签: service-fabric-stateful azure-service-fabric service-fabric-stateless


    【解决方案1】:

    ServiceRemotingExtensions 类位于 Microsoft.ServiceFabric.Services.Remoting.Runtime 命名空间中(不包括在内)。

    需要提及的重要一点是CreateServiceRemotingListener弃用。推荐使用的方法是CreateServiceRemotingReplicaListeners

    希望这会有所帮助。


    2019 年 1 月 28 日更新

    这里是示例代码:

    using System.Collections.Generic;
    using System.Fabric;
    
    using Microsoft.ServiceFabric.Services.Communication.Runtime;
    using Microsoft.ServiceFabric.Services.Remoting;
    using Microsoft.ServiceFabric.Services.Remoting.Runtime;
    using Microsoft.ServiceFabric.Services.Runtime;
    
    namespace JustService
    {
        public interface IRemotingService : IService
        {
            // Remoting methods
        }
        internal sealed class JustService : StatefulService, IRemotingService
        {
            public JustService(
                StatefulServiceContext context)
                : base(context)
            {
            }
            protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
            {
                return this.CreateServiceRemotingReplicaListeners();
            }
        }
    }
    

    请注意,为了使用CreateServiceRemotingReplicaListeners 扩展方法,服务应实现派生自IService 的接口。

    【讨论】:

    • 你能给我们举个例子吗?
    • @PrimeByDesign 我已在答案中添加了代码示例。
    • 谢谢。我最终设法到达了那里,但我相信这会对其他人有所帮助。
    猜你喜欢
    • 2018-12-04
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2018-09-05
    • 2011-09-30
    • 1970-01-01
    相关资源
    最近更新 更多