控制台应用客户端到Service Fabric无状态服务

时间:2016-12-01 12:00:40

标签: c# azure console azure-service-fabric stateless

我正在学习SF,现在正在尝试为无状态服务构建一个控制台客户端。

尝试按照此处的说明操作:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-connect-and-communicate-with-services

并将其添加到我的StatelessService类

    public interface IMyService : IService
    {
        Task<string> HelloWorldAsync();
    }

和一个简单的实现

    public Task<string> HelloWorldAsync()
    {
        return Task.FromResult("HELLO FROM SERVICE!");
    }

其余的没有改变。

在我的控制台应用中,我有

IMyService helloWorldClient = ServiceProxy.Create<IMyService>(
   new Uri("fabric:/RestGateway/StatelessGateway1"));
string message = await helloWorldClient.HelloWorldAsync();

部署到我的本地群集的服务似乎工作正常(绿色按钮)但是在调用helloWorldClient.HelloWorldAsync()时出现异常。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

不要忘记为您的服务添加通信监听器,如下所示:

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    yield return new ServiceInstanceListener(ServiceRemotingExtensions.CreateServiceRemotingListener(this, Context));
}

注意:

CreateServiceRemotingListener的调用会创建一个只能在群集中使用的特定communication listener。因此,当从您的开发机器与在您的开发群集上运行的服务进行通信时,这将起作用。您无法与在不同机器上运行的服务进行通信。

要从外部访问群集,您可以使用ServiceBusWCFOWIN。 (或者你自己建造的东西)