Uso de clases de servicio web en Silverlight al agregar referencia de servicio en lugar de referencia web

StackOverflow https://stackoverflow.com/questions/1600343

Pregunta

Scenario:

Estoy usando Silverlight 3.0 como cliente para un servicio web.

Diseño :

El servidor tiene una clase llamada DeviceInfoService que tiene la funcionalidad básica de obtener la lista de dispositivos, obtener las propiedades de los dispositivos, etc.

Cuando abro un proyecto ASP.NET e intento agregar una referencia web, puedo encontrar una opción para agregar una " Referencia web " ;. Después de agregar la referencia web de esta manera, puedo acceder a la clase DeviceInfoService creando su objeto y luego accediendo a sus métodos.

Referencia web v / s Referencia de servicio:

Viniendo a Silverlight: cuando intento agregar una referencia de servicio, no hay opción para agregar una referencia web. Al ir con Service Reference, todo funciona bien hasta que se descarga el archivo WSDL. La gente dice que puedo obtener esta opción volviendo a .NET 2.0, pero probablemente Silverlight no funcionará en .NET 2.0

El problema

Ahora, cuando intento acceder a la clase DeviceInfoService, no puedo encontrarlo. Todo lo que obtengo es Interfaces: DeviceInfoServiceSoap y DeviceInfoServiceSoapChannel. Clases llamadas DeviceInfoServiceSoapClient.

Los métodos GetHostedDevices y GetDeviceInfo ya no están disponibles. Todo lo que obtengo es GetDeviceInfoRequest, GetDeviceInfoRequestBody, GetDeviceInfoResponse y GetDeviceInfoResponseBody.

Busqué mucho en Google sobre cómo usar estas cuatro clases, solo para no encontrar nada. Quiero obtener esas 2 clases directamente como en ASP.NET y no usar esos tipos de Solicitud de respuesta.

¿Fue útil?

Solución

Lo que es una referencia web en ASP.NET es equivalente a una referencia de servicio en Silverlight.

Aquí hay un ejemplo de cómo usar un servicio web en Silverlight, p. el CDYNE Profanity Filter .

Agregue una nueva referencia de servicio a su proyecto, la URL es: http: // ws .cdyne.com / ProfanityWS / Profanity.asmx? wsdl , deje el nombre como ServiceReference1.

Use este código detrás para llamar al servicio (que se implementó para ser asíncrono):

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
}

¡Y tienes un servicio web en funcionamiento en Silverlight!

Otros consejos

Suenas terriblemente confuso acerca de algunos conceptos.

¿Qué tal si miras el siguiente video de Silverlight.Net y ves si eso ayuda? Cómo para consumir los servicios web de WCF y ASP.NET en Silverlight

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top