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 Windows 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 Windows application. In other words, I am consuming the WCF Service in a Windows 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 Windows application as:
- "Start" - "All Programs" - "Microsoft Visual Studio 2010".
- "File" - "New" - "Project..." then Windows Forms Application.
- Provide the project a name, such as "ConsumingWCFServiceInWindowsApp" or another as you wish and specify the location.
- Rename Form.cs to "AgeCalculator" or keep as it as you wish.
- Then drag three Text Boxes, one Button and one Label onto the "AgeCalculator" form.
Now the Windows 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 metho,d 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 Windows application will be as in the following:
Adding a WCF Service Reference in the Windows Application
The most important task when consuming a WCF Service in a Windows application is to add the WCF Service reference into the Windows Forms application. So how to add it? Let us see the procedure.
1. Right-click on the Windows Forms application and click on "Add Service Reference" as in the following:
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 Windows Forms Application. Since you see the "URL" option in the following window, on that window we need to paste or type 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 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 your Windows Forms Application as an allies name for the Web Service. In my article I have given the web reference name as "ServiceReference".
Then after adding the WCF Service reference in the Windows Forms 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 Windows application. I hope you understand how to add the WCF Service reference into the Windows Forms application.
Now after adding the WCF service Reference the following endpoints are by default added into the App.config file as:
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3,Profile=Client" />
- </startup>
- <system.serviceModel>
- <bindings>
- <basicHttpBinding>
- <binding name="BasicHttpBinding_IService1" />
- </basicHttpBinding>
- </bindings>
- <client>
- <endpoint address="http://localhost:3901/Service1.svc" binding="basicHttpBinding"
- bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference.IService1"
- name="BasicHttpBinding_IService1" />
- </client>
- </system.serviceModel>
- </configuration>
Calling the WCF Service method from the Windows Application
We have added the WCF Service reference into our Windows application. Now the next thing is how to call the WCF Service method that we created in our WCF Service Application from the Windows Forms Application.
The following is the procedure:
1. Go to the Agecalculator Form of our Windows 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 Agecalculator.cs form will be as follows:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
-
- namespace ConsumingWCFServiceInWindowsApp
- {
- public partial class AgeCalculator : Form
- {
- public AgeCalculator()
- {
- InitializeComponent();
- }
-
- private void button1_Click(object sender, EventArgs e)
- {
- int day, Month, Year, TotalDays;
-
-
- ServiceReference.Service1Client age = new ServiceReference.Service1Client();
-
-
- day = int.Parse(textBox1.Text);
- Month = int.Parse(textBox2.Text);
- Year = int.Parse(textBox3.Text);
-
-
- TotalDays = age.calculateDays(day, Month, Year);
-
-
- MessageBox.Show("You are Currently " + Convert.ToString(TotalDays) + " days old");
-
- }
- }
- }
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 Windows Forms 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 9198 days old, which means that for the last 9198 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 Windows Forms applications using my two articles. If you have any suggestion regarding this article then please contact me.