我已经想出如何创建内部公开的WCF服务,但完全不知道如何从其他Web角色或Web应用程序中使用此服务?
我遇到了一些回答这个确切场景的例子,但解释更多信息的链接似乎都已经死了。
任何人都可以提供帮助吗?
答案 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,请点击此处