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:

Solução serviço cliente WCF

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:

Interface WPF cliente WCF

Depois é necessário adicionar uma referência para o serviço WCF, conforme na tela abaixo

Inclusão de referência do serviço 

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.

image

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.
  

Cliente WCF executando

O código fonte deste post pode ser acessado aqui.