如何在Azure中使用内部端点。

时间:2015-04-03 01:28:05

标签: wcf azure azure-web-roles azure-worker-roles endpoint

我已经想出如何创建内部公开的WCF服务,但完全不知道如何从其他Web角色或Web应用程序中使用此服务?

我遇到了一些回答这个确切场景的例子,但解释更多信息的链接似乎都已经死了。

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

让我们想象一下这个场景:

您在具有内部端点的辅助角色中托管了WCF服务。它实现了ICalculator合同,这是一个简单的计算器(ADD,Mult ...等)。

另一端你有一个Webform应用程序当按钮点击时你只是发送一些数据来计算。

这是使用此Web服务的代码:

    protected void Button1_Click(object sender, EventArgs e)
    {
        var factory = new ChannelFactory<WorkerHost.ICalculator>(new NetTcpBinding(SecurityMode.None));
        var channel = factory.CreateChannel(GetRandomEndpoint());
        Label3.Text =channel.Add (Convert.ToInt32(TextBox1.Text) , Convert.ToInt32(TextBox2.Text)).ToString();

    }

并且getRanDomeEndpoint()的代码是

  private EndpointAddress GetRandomEndpoint()
    {
        var endpoints= RoleEnvironment.Roles["WorkerHost"].Instances.Select(i=>i.InstanceEndpoints["CalculatorService"].IPEndpoint).ToArray();
        var r = new Random(DateTime.Now.Millisecond);
        return new EndpointAddress(string.Format("net.tcp://{0}/Calculate", endpoints[r.Next(endpoints.Count() - 1)]));
    }

我已经将服务上传到azure,请点击此处

http://workerrolewcf.cloudapp.net/default.aspx