Question

Scenario:

I am using Silverlight 3.0 as client for a web service.

Design:

The server has a class named DeviceInfoService which has the basic functionality of getting the list of devices, getting the properties of devices etc.

When I open an ASP.NET project and try to add a web reference, I can find an option to add a "Web Reference". After I add the web reference this way, I am able to access the DeviceInfoService class by creating it's object and then accessing it's methods.

Web Reference v/s Service Reference:

Coming to Silverlight: when I try to add a service reference, there is no option to add a web reference. Going with Service Reference, everything works fine till WSDL file is downloaded. People say that I can get this option by going back to .NET 2.0, but probably Silverlight won't work in .NET 2.0

The Problem

Now when I try to access the class DeviceInfoService , I am not able to find it. All I get is Interfaces -- DeviceInfoServiceSoap and DeviceInfoServiceSoapChannel. Classes named DeviceInfoServiceSoapClient.

The methods GetHostedDevices and GetDeviceInfo are no longer available. All I get is GetDeviceInfoRequest, GetDeviceInfoRequestBody, GetDeviceInfoResponse and GetDeviceInfoResponseBody.

I googled a lot how to use these four classes, only to find nothing. I want to get those 2 classes directly like in ASP.NET and not using those Request Response type.

Was it helpful?

Solution

What is web reference in ASP.NET is equivalent to service reference in Silverlight.

Here's an example of how to use a web service in Silverlight, e.g. the CDYNE Profanity Filter.

Add a new Service Reference to your project, URL is: http://ws.cdyne.com/ProfanityWS/Profanity.asmx?wsdl, leave the name as ServiceReference1.

Use this code behind to call the service (which was implemented to be asynchronous):

public MainPage()
{
    InitializeComponent();

    string badText = "I wonder if the filter will filter this out: shit bad luck";
    ServiceReference1.ProfanitySoapClient client = new ServiceReference1.ProfanitySoapClient();
    client.ProfanityFilterCompleted += new EventHandler<ServiceReference1.ProfanityFilterCompletedEventArgs>(client_ProfanityFilterCompleted);
    client.ProfanityFilterAsync(badText, 0, false);            
}

void client_ProfanityFilterCompleted(object sender, ServiceReference1.ProfanityFilterCompletedEventArgs e)
{
    string cleanText = e.Result.CleanText;  // Web service callback is here
}

And you've got a web service up and running in Silverlight!

OTHER TIPS

You sound awfully confuse about some concepts.

How about you watch the following Silverlight.Net video and see if that helps? How to Consume WCF and ASP.NET Web Services in Silverlight

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top