Hola a todos.
Después de crear un wcf en Azure y de consumir un EndPoint interno que viaja por tcp, ahora procedemos a consumir dicho EndPoint interno desde una aplicación en un WebRole.
Para revisar el post anterior http://geeks.ms/rduarte/2016/03/13/comunicacin-interna-wcf-en-azure/
Lo primero es agregar una solución web de tipo Web Role, puede ser una aplicación tipo web forms o mvc.
Dicha aplicación le colocamos un EndPoint de entrada, para poder acceder a ella.
Creamos un botón con la siguiente funcionalidad.
[sourcecode language='csharp' padlinenumbers='true' htmlscript='false'] protected void Button1_Click(object sender, EventArgs e) { try { var factory = new ChannelFactory<WcfWorker.IWorker>(new NetTcpBinding(SecurityMode.None)); var current = RoleEnvironment.CurrentRoleInstance; var channel = factory.CreateChannel(GetRandomEndpoint()); Label1.Text = channel.Say("Hola"); } catch (Exception ex) { Label1.Text = ex.Message; } } private EndpointAddress GetRandomEndpoint() { var endpoints = RoleEnvironment.Roles["WcfWorker"].Instances.Select(i => i.InstanceEndpoints["InternalRest"].IPEndpoint).ToArray(); var r = new Random(DateTime.Now.Millisecond); return new EndpointAddress(string.Format("net.tcp://{0}/InternalRest", endpoints[r.Next(endpoints.Count() - 1)])); } [/sourcecode]
Para esta parte es importante saber que servicio es el que esta expuesto para uso interno. Revisen CreateServiceHost();
Ahora publicamos y probamos.
Bueno, espero que sea de utilidad este post.
Sl2
Romny