Web services en .net

Net!. Estoy haciendo un web service que debe devolver resultados de una consulta a una bd de msql (varios registros arroja la consulta). A posterior, la aplicación cliente debe armar un treeview con los datos que el webservice le manda. He probado ya un treeview sencillo del lado del cliente y me funciona. Ahora mi consulta es respecto a cual es la manera adecuada de devolver el resultado del webservice, porque si devuelve un dataset (algo que me solucionaría la vida pues luego la función del treeview lo utiliza) en un futuro si el web service se invoca desde una aplicación en, por ej, java, que no existen los dataset, no podría utilizarse y esa no es la idea. ¿Se ha entendido mi consulta?

1 respuesta

Respuesta
1
Respondo a tu pregunta con lo siguiente.
Cuando yo hice algo parecido en la clase del web service me toco especificar que era una clase serializable (en c# [Seriablizable], no me acuerdo en VB) y el convertía el dataset en una estructura xml que posteriormente retornaba y antes de entregarla la volvía a convertir a un dataset. Si en la clase del web service especificas que devuelve un dataset, él implícitamente lo serializa a través de un xml, pero tienes razón, si la idea después es usarlo en java o php no va a ser muy estándar que digamos. En este caso te toca serializar a ti mismo el dataset o simplemente armar convertir tu dataset a un xml y siempre retornar ésto, pues xml es estándar y en cualquier lenguaje vas a poder recuperarlo y trabajar sin problema. Puedes armarlo tu mismo o si mal no estoy el dataset tiene una función que convierte su instancia en un xml.
Respondo a tu pregunta con esto.
Cuando yo hice algo parecido me toco especificar en la clase del web services que ésta era serializable (en c# [serializable], en VB no recuerdo) y ademas que devolvía un dataset.
Lo que hace ésto internamente es serializar el dataset en un xml y enviarlo por el canal, cuando el secupera en la aplicación local, como la función que del web service se especifico que devolvía un dataset, entonces .net convierte nuevamente el xml a un dataset. Todo esto se hace tranaparente para nosotros ya que .NET lo hace internamente.
Sin embargo tienes razón, si la idea es después utilizar éste web service desde java o php, entonces no va a quedar muy estándar que digamos. En este caso te recomiendo lo siguiente:
Tienes que serializar tu mismo el dataset y devolver una estructura xlm, ya que es lo único estándar que tiene todos los lenguajes. Para serializar puedes tu mismo armar el xml recorriendo la estructura del data set o si mal no estoy creo que la clase dataset tiene un método que convierte su instancia en una estructura xml. Retorna ese xlm y ya desde cualquier lenguaje lo recuperas y lo trabajas como necesites.
Hola! Gracias por tu respuesta. Consulte los tutoriales de microsoft .net para saber como serializar un dataset y reacomode el web service para que la respuesta sea el xml serializado. Pero cuando le doy F5 para poner en marcha el ws, me acusa el siguiente erro, que nunca antes lo había hecho: "Error 1 Es incorrecto utilizar una sección registrada como
allowDefinition='MachineToApplication' más allá del nivel de aplicación. Este
error puede tener como origen un directorio virtual que no esté configurado como
aplicación en IIS.". Busque en google y es un error frecuente cuando se trabaja con asp y páginas web y no se ponen en el directorio virtual de IIS.Mi duda es: yo tengo un web service, nunca hice ningún directorio ni nada en IIS, siempre se ejecuto normalmente desde la ubicación local. Ah!! si comento las lineas nuevas agregadas, sigue igual con el mismo problema. Me resulta raro... si sabes que puede ser te agradecería enormemente pues ya no se como más buscar en google y que probar... Gracias por la atención y saludos!
La verdad no recuerdo si a mi me toco colocar eso en un directorio virtual, pero intenta hacer a ver si te funciona. Para ello (si tienes XP, 2003 server) vas a panel de control, luego en herramienats administrativas y luego en el administrador Internet Information Services o Server y allí buscas en el árbol izquierdo algo que diga Sitio web predeterminado y luego le das nuevo directotio virtual, cuando lo hagas veras en algunas de las fichas algo que dice ASP:ENT, entonces seleccionas el framework con el que estas trabajando 1.1 o 2 o 3, el que sea.
Eso te crea una carpeta en c:\inetpub\wwwroot\
Ahí es donde debes publicar el web service.
Muchas gracias! Con respecto a la ultima pregunta que realicé... solo se solucióm volviendo a crear todo en un nuevo proyecto. Y con respecto a la primer pregunta, pude serializar el dataset y la aplicación clientes luego procesa el archivo recibido! Saludos y gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas