2015-04-03 3 views
0

Я выяснил, как создать службу WCF изнутри, но не имеет понятия, как использовать эту услугу из другой веб-роли или веб-приложения?Как использовать внутреннюю конечную точку в Azure.

Я столкнулся с некоторыми примерами, которые отвечают на этот точный сценарий, но ссылки, объясняющие больше информации, кажутся мертвыми.

Любой, кто может помочь?

ответ

1

Давайте представим себе такой сценарий:

У вас есть WCF услуга, размещенная в рабочем роли с внутренней точкой. Он реализует контракт ICalculator, который представляет собой простой калькулятор (ADD, Mult ... и т. Д.).

На другом конце у вас есть приложение Webform, когда кнопка Щелкнув, вы просто отправляете некоторые данные для расчета.

вот код для употребления этого веб-сервиса:

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)])); 
    } 

Я загрузил обслуживание на лазурное проверить его здесь

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

+0

Благодарим вас за простой пример. Разный вопрос: внутренние службы tcp должны отображаться через роль рабочего? или они могут быть открыты через веб-роль? –

+0

Они используются для межпроцессорной связи, поэтому вы можете либо опубликовать их через веб-страницу, либо роль рабочего. В большинстве случаев они используются для роли рабочего, поскольку веб-роль уже размещена в IIS – Coder1409