Introduction:
In this article we are going to see how to consume a WCF Service in a Windows
Phone 7 Application Development. For the beginners WCF is a Windows
Communication Foundation is a Microsoft framework to build application in
Service Oriented Architecture. We can use WCF as a service to send data across
the application as a service with the endpoints predefined to communicate. The
service endpoints can be of type which is hosted on to an IIS Server and
available anytime, or it can also be an application oriented service to provide
on demand usage. The data transfer through the messages can be of any particular
format that the sender and receiver can able to understand the communication
over the protocol.
In Windows Phone 7 development we have scenarios where we need to pass and get
the data over the service through some authorized protocols and secured ports
where WCF plays a major role. Let us see the step by step process on how to
consume a WCF Service in a Windows Phone 7 Application taking into consideration
the reader should be familiar with creating a WCF Service and hosting on to IIS.
Refer MSDN article to get some idea on how to create and host the WCF Service
using the link http://msdn.microsoft.com/en-us/library/ms733766.aspx
Steps:
Open Visual Studio 2010 IDE in administrator mode and create a new Silverlight
for Windows Phone 7 Application with a valid project name as shown in the screen
below.

We can see the project is created and the main page is opened with the default
controls. Let us consider that we have a WCF application already created and
hosted on IIS which can be consumed and pass the value (2 numbers) and we will
get the sum of the values passed as the output. So from our Windows phone 7
application we can pass the 2 values and we can make the WCF do the sum and
sends the result back which can be viewed in the application.
First let us add some controls which gets the user inputs that should be passed
to the WCF Service and to show the results to the end users. Just copy the XAML
provided below to get the same user experience with the design as shown in the
screen below.

XAML Code:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--<span class="hiddenSpellError" pre="">TitlePanel</span> contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="F5DEBUG WP7 TUTORIALS" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="WCF Service" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--<span class="hiddenSpellError" pre="">ContentPanel</span> - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Height="30" HorizontalAlignment="Left" Margin="30,43,0,0" Name="textBlock1" Text="Value 1" VerticalAlignment="Top" />
<TextBlock Height="30" HorizontalAlignment="Left" Margin="30,117,0,0" Name="textBlock2" Text="Value 2" VerticalAlignment="Top" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="119,19,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="313" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="119,97,0,0" Name="textBox2" Text="" VerticalAlignment="Top" Width="313" />
<TextBlock Height="116" HorizontalAlignment="Left" Margin="53,312,0,0" Name="txtResult" Text="" TextWrapping="Wrap" VerticalAlignment="Top" Width="379" />
<Button Content="Consume WCF and Get Result" Height="72" Margin="6,196,0,0" Name="button1" VerticalAlignment="Top" />
</Grid>
</Grid>
Now we can consume the WCF Service by right
clicking on the Project and select Add Service reference, we can see a pop up
window where we need to input the WCF Service and the details as shown in the
screen below.

Clicking on OK will add the service reference to the project file and we can see
the service reference files added with the name provided in the namespace along
with some reference files as well. Now we need to put our code logic to consume
the service and pass the values as shown in the code below.

Code Behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
namespace F5debugWp7ConsumeWCF
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
WCFServiceToSumData.Service1Client client = new WCFServiceToSumData.Service1Client();
int intvalue1 = Convert.ToInt32(textBox1.Text.ToString());
int intvalue2 = Convert.ToInt32(textBox2.Text.ToString());
client.Add2NumbersAsync(intvalue1, intvalue2);
client.Add2NumbersCompleted +=
new EventHandler<WCFServiceToSumData.Add2NumbersCompletedEventArgs>
(client_getStringCompleted);
}
private void client_getStringCompleted(object sender, WCFServiceToSumData.Add2NumbersCompletedEventArgs e)
{
txtResult.Text = "The Sum of the above 2 number is " + e.Result;
}
}
}
Now we are done with our code, just to check if
the things are working good we can directly run the application by pressing F5
from the key board or from the tool bar and we can see the expected results once
we pass the data as shown in the screens below.
Output Screens:

Conclusion:
So in this article we have seen how to make use of the WCF service which we
created locally or to consume the 3rd party WCF Service and get the desired
output as per the requirement in Windows Phone 7 Development environment.
Thanks for reading my article. If you like my blog and if you are interested in
getting the latest updates on new articles, kindly follow me through one of
these options.

Abhishek DubeyPosted Apr 28, 2012, 6:50 AM
Hi Karthikeyan..Can be possible WCF implement in java lanuage ?