Microsoft Silverlight provides a rich platform to write internet applications. One of its key features is to enable the applications to communicate with the web services. Microsoft Silverlight Beta1 version was equipped with the web service client stack. The web service team has recently added web client configuration support (available in Beta2 and later release). This feature enables deployment time configuration such as changing targeted service endpoints or various behavior settings without having to rebuild and redeploy the binaries. Below illustrates the step-by-step tutorial.
- Microsoft Silverlight 2.0 Beta 1.
- Microsoft Visual Studio 2008.
- Microsoft Silverlight Tools Beta 1 for Visual Studio 2008.
- Microsoft Silverlight SDK 2.0 Beta 1.
Note: available from the Silverlight download site.
1. Before we get started, we have to create a web service. You may follow this instruction on how to create and configure WCF web service to work with Silverlight. Create 2 web services to experience the configuration effects on the Silverlight client and deploy the web services at http://localhost/webservice. Use browser to navigate to http://localhost/webservice/service1.svc and http://localhost/webservice/service2.svc to ensure the services are up and running.
namespace CustomerService
{
public class Service1 : IService1
public string GetData(int value)
return string.Format("Serivce1: You entered {0}", value);
}
public class Service2 : IService1
return string.Format("Serivce2: You entered {0}", value);
2. Use Visual Studio 2008 to create a Silverlight Application. Add a <TextBlock/> in page.xaml. This TexBlock will be used to display the result from web service calls.
3. Generate a proxy to a web service. Select the SilverlightApplication1 on “Solution Explorer”, right click and select “Add Service Reference…” . Enter http://localhost/webservice/service1.svc in address box. Then click Go and OK.
4. The proxy to the webservice is now created along with the client configuration (ServiceReferences.ClientConfig). The file will be deployed along with other silverlight application components. If you are familiar with .Net 3.0 configuration, this file has similar contents (a subset) and generally used to configure the client proxy.
5. Add codes to make a web service call and display the result using the textblock.
namespace SilverlightApplication1
public partial class Page : UserControl
public Page()
InitializeComponent();
// hookup page's loaded event
void Page_Loaded(object sender, RoutedEventArgs e)
// call service
ServiceReference1.Service1Client proxy = new
ServiceReference1.Service1Client();
proxy.GetDataCompleted += new
EventHandler<ServiceReference1.GetDataCompletedEventArgs>
(GetDataCompleted);
proxy.GetDataAsync(1);
void GetDataCompleted(object sender,
ServiceReference1.GetDataCompletedEventArgs e)
// display on textblock
uxText.Text = e.Result;
6. Compile and run the application. You will see the result returned from Service1 as below.
7. Let’s assume, at deployment time, you want to direct the client to a different web service (Service2.svc). You could simply edit a ServiceReferences.ClientConfig and modify the endpoint address (see below).
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1"
maxBufferSize="65536"
maxReceivedMessageSize="65536">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/webservice/Service2.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1"
contract="SilverlightApplication1.ServiceReference1.IService1"
name="BasicHttpBinding_IService1" />
</client>
</system.serviceModel>
</configuration>
8. Once you repackage this file into the XAP and run the application (or by simply recompile the application). You will see the result returned from Service2.svc.
The webservice client configuration is very useful for deployment time configuration. For Silverlight application, it contains a subset of .Net WCF client configuration. Unlike .Net configuration, the configuration file must be named “ServiceReferences.ClientConfig”, packaged and deployed along with the application.