2015-04-03 39 views
0

我想出瞭如何創建一個內部公開的WCF服務,但絕對不知道如何從另一個Web角色或Web應用程序使用此服務?如何使用Azure中的內部端點。

我遇到了一些例子,回答這個確切的情況,但解釋更多信息的鏈接似乎都已死亡。

任何人都可以提供幫助嗎?

回答

1

讓我們想象一下這樣的場景:

你必須與內部端點輔助角色承載的WCF服務。它實現了一個簡單的計算器(ADD,Mult ...等)的合約ICalculator。

另一方面,你有一個Webform應用程序時按鈕點擊你只是發送一些數據進行計算。

這裏是消耗此WebService的代碼:

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

+0

謝謝你一個容易遵循的例子。內部tcp服務必須通過工作角色暴露出來嗎?或者他們可以通過網絡角色暴露? – 2015-04-05 01:36:48

+0

它們用於角色間通信,因此您可以通過Web或工作角色公開它們 對於大多數情況下,它們用於工作者角色,因爲Web角色已經託管在IIS中 – Coder1409 2015-04-06 12:50:36

相關問題