Consuming WCF Service in WPF Application

Background

In my previous article 
Creating WCF Service we learned how to create a simple WCF Service application. This article explains how to consume the WCF Service application in a WPF application.

And remember, I have written this article only focusing on beginners. So let us start step-by-step so beginners can understand it very easily.

Requirement

You need to keep a WCF service  application in running mode so it can be accessible for use, so go to my article Creating WCF Service
and create a WCF service and keep it in running mode. I hope you have done that.

Consuming
Many beginners are confused about what consuming means, but its very simple, it means to use the WCF Services in an application.

Example:

I have created a WCF Service and now I want to use it in a real requirement so I used it in a WPF application. In other words, I am consuming the WCF Service in a WPF application. Similarly you can use the same WCF Service in a Windows, console application, Java and other applications.

I hope you understand the word "consuming".
 
 So let us create the simple WPF application as:
  1. "Start" - "All Programs" - "Microsoft Visual Studio 2010".
  2. "File" - "New" - "Project..." then WPF  Application.
  3. Provide the project a name, such as "ConsumingWCFServiceInWPFApp" or another as you wish and specify the location. 
  4. Rename Form.cs to "AgeCalculator" or keep as it as you wish.
  5. Then drag three Text Boxes, one Button and one Label onto the "AgeCalculator" form.
Now the WPF Forms form will be look such as follows:
 
 
 
In the preceding source code, you have seen that I have taken three text boxes to get input from users because we know that our WCF  Service method created as in my article
Creating WCF Service, takes the three input values day, month and year so I have taken the three text boxes and a button click event. We will call the WCF Service method and the output will be displayed in an alert Message box.

I hope you understand it.

Now your Solution Explorer of the WPF application will be as in the following:

 
 Adding a WCF Service Reference in the WPF Application

The most important task when consuming a WCF Service in a WPF application is to add the WCF Service reference into the WPF application. So how to add it? Let us see the procedure.

1. Right-click on the WPF
application and click on "Add Service Reference" as in the following:

AddServiRef.png

Then after clicking on the preceding option, the following window will appear. Now this is a very important step, when adding the WCF service reference to the WPF  Application. Since you see the "URL" option in the following window, on that window we need to  paste in or type in the WCF Service URL address.
 
 
 
 So let us see the procedure again for adding the URL Reference in the preceding URL box.
  • Run the WCF Service we created in my article Creating WCF Service by clicking on F5 or whatever other option you are familiar with, it will then show the following WFC Client window and copy the address as:



Now you just need to copy the preceding URL that I circled in Red and paste it into the window URL option, as shown in the following and click on the Discover button, it will show the following output as:
 
 

After pasting the URL in the preceding window box, click on the Green right headed arrow button. It will discover the WCF Services available related to that URL address and you see that in that related URL a one WCF Service is found message is displayed along with the WCF Service name, "WCF Services" in the preceding right-hand side window.

  • WCF Service Reference Name

In the right-hand corner of the window you have seen the option for the Service reference name; the Service reference name is anything you wish and this name will be added to WPF Application as an allies name for the WCF service. In my article I have given the web reference name as "ServiceReference".

Then after adding the WCF Service reference in the WPF application the Solution Explorer will look as in the following:

 
 

In the preceding window, you have clearly seen that the WCF Service reference named "ServiceReference" is added into the WPF application. I hope you understand how to add the WCF Service reference into the WPF application.

Now after adding the WCF service Reference the following endpoints are by default added into the App.config file as:
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <configuration>  
  3.   <startup>  
  4.     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3,Profile=Client" />  
  5.   </startup>  
  6.   <system.serviceModel>  
  7.     <bindings>  
  8.       <basicHttpBinding>  
  9.         <binding name="BasicHttpBinding_IService1" />  
  10.       </basicHttpBinding>  
  11.     </bindings>  
  12.     <client>  
  13.       <endpoint address="http://localhost:3901/Service1.svc" binding="basicHttpBinding"  
  14.           bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference.IService1"  
  15.           name="BasicHttpBinding_IService1" />  
  16.     </client>  
  17.   </system.serviceModel>  
  18. </configuration> 

Calling the WCF Service method from the WPF Application

We have added the WCF Service reference into our WPF application. Now the next thing is how to call the WCF Service method that we created in our WCF Service Application from the WPF Application.

The following is the procedure:

    1. Go to the Agecalculator Form of our WPF application and double-click on the button that we have placed on the Agecalculator form.

    2. Now write the following code in the button click to create the object of the WCF Service class as:

          ServiceReference.Service1Client age = new ServiceReference.Service1Client();
 
In the code above, I have created the object named "age" of the WCF Service client followed by the Web reference name ("ServiveReference") and WCF  Service client. I hope you understand how to create the object of the WCF Service client.
 
The entire code of the MainWindow.xaml.cs form will be as follows:
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Data;  
  8. using System.Windows.Documents;  
  9. using System.Windows.Input;  
  10. using System.Windows.Media;  
  11. using System.Windows.Media.Imaging;  
  12. using System.Windows.Navigation;  
  13. using System.Windows.Shapes;  
  14.   
  15. namespace ConsumingWCFServiceInWPFApp  
  16. {  
  17.     /// <summary>  
  18.     /// Interaction logic for MainWindow.xaml  
  19.     /// </summary>  
  20.     public partial class MainWindow : Window  
  21.     {  
  22.         public MainWindow()  
  23.         {  
  24.             InitializeComponent();  
  25.         }  
  26.   
  27.         private void button1_Click(object sender, RoutedEventArgs e)  
  28.         {  
  29.             int day, Month, Year, TotalDays;  
  30.   
  31.             //creating the object of WCF service client       
  32.             ServiceReference.Service1Client age = new ServiceReference.Service1Client();  
  33.   
  34.             //assigning the input values to the variables       
  35.             day = int.Parse(textBox1.Text);  
  36.             Month = int.Parse(textBox2.Text);  
  37.             Year = int.Parse(textBox3.Text);  
  38.   
  39.             //assigning the output value from service Response       
  40.             TotalDays = age.calculateDays(day, Month, Year);  
  41.   
  42.             //assigning the output value to the lable to show user       
  43.             MessageBox.Show("You are Currently " + Convert.ToString(TotalDays) + " days old");  
  44.         }  
  45.     }  

Code Explanation

In the code above, I first created the object as "age" of the WCF Service class followed by the WCF service reference name ("ServiceReference") and WCF Service Client("service1client").

Then I declared the three integer variables "day", "Month" and "Year" to store the values provided by the user as input from the Textbox1, Textbox2 and Textbox3.

Now, in the next step, as you know our WCF Service method takes three parameters, so I ed the three input parameters "day", "Month" and "Year" to the WCF Service method "calculateDays". Then I declared another integer variable, "TotalDays", to store the values returned by the WCF Service method "calculateDays". And finally I displayed the values returned by the WCF Service method "calculateDays" on the Message box using the variable "TotalDays" because, as you know, we have stored the returned values of the method into the variable TotalDays, so the final result will be stored in the variable TotalDays.

Now, run the WPF  application and provide the input of day, Month and Year. I will enter my Date of Birth and then I will click on the "Calculate" button, it will show the output as in the following:

In the preceding screen, you see that currently, I am 9212 days old, which means that for the last 9212 days, I have been on this earth.

Note:
  • For detailed code please download the Zip file attached above.
  • Also refer to my previous article about Creating WCF Service.

Summary

I hope that beginners as well as students understand the creation and consumption of a WCF Service Application in a WPF application using my two articles. If you have any suggestion regarding this article then please contact me.

 

Up Next
    Ebook Download
    View all
    Learn
    View all