Consumindo serviços WCF
Olá pessoal, dando continuidade às postagens sobre WCF, agora vou comentar sobre como consumir serviços utilizando WCF.
O primeiro passo é adicionar um novo projeto na solução, aqui vou adicionar um projeto do tipo WPF Application e a solução deve ficar assim:
Em seguida é necessário criar uma interface para o cliente do serviço, para isto basta utilizar o XAML abaixo.
1: <Window x:Class="ClienteWCF.Window1"
2: xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
4: Title="ClienteWCF" Height="300" Width="300">
5: <Grid>
6: <Grid.ColumnDefinitions>
7: <ColumnDefinition/>
8: <ColumnDefinition/>
9: </Grid.ColumnDefinitions>
10: <Grid.RowDefinitions>
11: <RowDefinition Height="40*" />
12: <RowDefinition Height="40*" />
13: <RowDefinition Height="40*" />
14: <RowDefinition Height="200*" />
15: </Grid.RowDefinitions>
16: <TextBlock Text="Valor1:" Grid.Column="0"
17: Grid.Row="0" Margin="5" />
18: <TextBlock Text="Valor2:" Grid.Column="0"
19: Grid.Row="1" Margin="5" />
20: <TextBlock Text="Resultado:" Grid.Column="0"
21: Grid.Row="2" Margin="5" />
22: <TextBox x:Name="Valor1TextBox" Grid.Column="1"
23: Grid.Row="0" Margin="5" />
24: <TextBox x:Name="Valor2TextBox" Grid.Column="1"
25: Grid.Row="1" Margin="5" />
26: <TextBlock x:Name="ResultadoTextBlock" Grid.Column="1"
27: Grid.Row="2" Margin="5" />
28: <Button x:Name="SomarButton" Grid.Row="3" Grid.ColumnSpan="2"
29: Click="SomarButton_Click" Content="Somar" Width="100"
30: Height="40" VerticalAlignment="Top" Margin="5"/>
31: </Grid>
32: </Window>
Que deve gerar a seguinte tela:
Depois é necessário adicionar uma referência para o serviço WCF, conforme na tela abaixo
Em seguida clique no botão Discover para pesquisar pelos projetos de serviço na solução, escolha o serviço da calculadora e forneça um nome para o namespace, no exemplo o nome é CalcServiceReference.
Com a referência criada o próximo passo é criar o código para chamar o serviço, conforme o seguinte exemplo.
1: private void SomarButton_Click(object sender, RoutedEventArgs e)
2: {
3: var servico = new CalcServiceReference.CalcServiceClient();
4: var valor1 = double.Parse(Valor1TextBox.Text);
5: var valor2 = double.Parse(Valor2TextBox.Text);
6: var resultado = servico.Add(valor1, valor2);
7: ResultadoTextBlock.Text = resultado.ToString();
8: }
Depois é só compilar e testar a aplicação, segue o print do meu teste.
O código fonte deste post pode ser acessado aqui.
Comments
Anonymous
June 30, 2015
Como fazer isso para uso fora da rede local edivan.cabral@yahoo.com.brAnonymous
July 06, 2015
Oi Edivan, Entendo que adicionar a referencia ao servico, vc precisaria utilizar o endereco que o servico esta hospedado, sendo diferente de localhost. Abs., RG